使用"正确分割文本。"分隔符

时间:2016-02-27 17:38:56

标签: scala

在Scala中,我有一个由一组句子组成的文本。 我试图将这个文本分成这样的单个句子:

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: 

2 个答案:

答案 0 :(得分:5)

String.split需要正则表达式,.表示正则表达式中的“任何东西”,因此您需要将其转义:

val sentences: Array[String] = text.split("\\.")

现在,如果您的分隔符是单个字符,则可以使用不会将参数解释为正则表达式的重载split(char)方法。

val sentences: Array[String] = text.split('.')

答案 1 :(得分:2)

java.lang.String#split(String)方法按RegEx而不是字符序列进行拆分。 .是一个特殊的正则表达式字符,匹配任何字符(包括字母)。因此,您最终会通过所有进行拆分,从而产生一个空数组。您可以通过转义正则表达式中的.字符来避免这种情况:

val sentences: Array[String] = text.split("\\.")
                                        // ^ escape using \