Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Regex 斯卡拉。分割行正则表达式返回意外的空字符串_Regex_Scala - Fatal编程技术网

Regex 斯卡拉。分割行正则表达式返回意外的空字符串

Regex 斯卡拉。分割行正则表达式返回意外的空字符串,regex,scala,Regex,Scala,请参见下面的示例。我创建一个多行字符串,然后尝试拆分它。除了第一行,它工作正常。默认情况下,split方法不返回分隔符。因此,我想知道行的开头有什么特别之处,它返回“”。以及如何更新正则表达式以避免它 scala> val Shakespear = | """ | |To be, | | or not | |to be: | """.stripMargin Shakespear: Stri

请参见下面的示例。我创建一个多行字符串,然后尝试拆分它。除了第一行,它工作正常。默认情况下,split方法不返回分隔符。因此,我想知道行的开头有什么特别之处,它返回
”。以及如何更新正则表达式以避免它

scala> val Shakespear =
     |     """
     |       |To be,
     |       | or not
     |       |to be:
     |     """.stripMargin
Shakespear: String =
"
To be,
 or not
to be:
    "

scala> Shakespear.split("""[\s]+""")
res3: Array[String] = Array("", To, be,, or, not, to, be:)
谢谢。

与其更新正则表达式,不如两端的空格,然后拆分:

Shakespear.trim.split("\\s+")
// res22: Array[String] = Array(To, be,, or, not, to, be:)
至于为什么有一个空字符串,在字符串的开头有一个新行字符,它也被
\\s
捕获,拆分它会得到一个空字符串,因为分隔符前面没有任何内容

以下是字符串的原始表示形式(转义借用自):

如果不希望在新行字符上拆分,请改用“”:

Shakespear.split(" ")

//res26: Array[String] =
//Array("
//To", "be,
//", or, not
//to, "be:
//")
Shakespear.split(" ")

//res26: Array[String] =
//Array("
//To", "be,
//", or, not
//to, "be:
//")