在Scala中使用字符串拆分和使用char参数之间的区别?

时间:2015-08-06 03:36:42

标签: java string scala

String和Char参数都生成相同的输出。 Split与字符串参数和Scala中的char参数有什么区别?

使用String参数 -

scala> "hello world".split(" ")
res0: Array[java.lang.String] = Array(hello, world)

使用Char参数 -

scala> "hello world".split(' ')
res1: Array[String] = Array(hello, world)

3 个答案:

答案 0 :(得分:1)

从Java类继承的字符串参数。作为Char参数,Scala使用它自己的类StringLike Class。这意味着

scala> "hello world".split(" ")

使用Java中的Split方法。

scala> "hello world".split(' ')

使用Scala中的Split方法。

答案 1 :(得分:1)

采用字符串的版本将字符串解释为正则表达式。这可能会导致一些高度混乱的行为。参见例如

scala> "ab.cd".split(".")
res1: Array[java.lang.String] = Array()

""是一个匹配所有内容的正则表达式,因此所有字符都是分割字符,结果是emtpy。这是java.lang.String。

中一个值得怀疑的设计决定

采用char的scala扩展方法只匹配文字字符。因此,它不仅速度更快,而且更具可预测性:

scala> "ab.cd".split('.')
res2: Array[String] = Array(ab, cd)

答案 2 :(得分:0)

换句话说,当您使用“Hello world”.split('')分割字符时,您将使用单个字符分割输入。例如,您可以分为“a,b,e,f”等。 但是,当您使用字符串方法时,您可以使用单词分割字符串,例如随时显示单词“Cat”。

因此,当您使用单个字符拆分字符串时,使用“hello world”.split('')。

如果你是一个将基因分成亚基因的天才,那么如果你想要GTA基因GTACATFAGTAFADGTA之间的所有东西,你会使用“Hello world.split(”GTA“)。

希望这会有所帮助。