使用“。”不能正确分割文本。分隔符
问题描述:
在斯卡拉,我有一个由一组句子组成的文本。 我试图分裂这个文本变成单独的句子是这样的:使用“。”不能正确分割文本。分隔符
val sentences: Array[String] = text.split(".")
然而,当我检查sentences
阵列(如在下面的线),我观察到数组为空:
println("Sentences are: " + sentences.mkString(" "))
为什么拆分不正确?
对于文本:
A sword is a bladed weapon intended for both cutting and thrusting. The precise definition of the term varies with the historical epoch or the geographical region under consideration. A sword in the most narrow sense consists of a straight blade with two edges.
输出是:
Sentences are:
答
String.split需要一个正则表达式,.
意味着在正则表达式 “任何东西”,所以你需要转义:
val sentences: Array[String] = text.split("\\.")
现在,如果您的分隔符是单个字符,则可以使用重载的split(char)
方法不会将参数解释为正则表达式。
val sentences: Array[String] = text.split('.')
+0
觉得很有用,从我这里投票。 –
答
java.lang.String#split(String)
方法按RegEx而不是字符序列分割。 .
是一个特殊的正则表达式字符,匹配任何字符(包括字母)。因此,你最终分裂一切,这产生一个空的数组。您可以通过转义正则表达式中的.
字符来避免这种情况:
val sentences: Array[String] = text.split("\\.")
//^escape using \
您是否有一个最小示例在手?我是斯卡拉的初学者,但我想帮忙。 – gsamaras
我也在谈论代码。 :) – gsamaras
包含它的代码有点复杂,我认为这不会有帮助。 – octavian