用char分割字符串
scala有一种在StringOps.split中拆分字符串的标准方法
但是这种行为让我感到有些惊讶. 为了演示,使用快速便利功能 def sp(str: String) = str.split('.').toList 以下表达式都评估为true (sp("") == List("")) //expected (sp(".") == List()) //I would have expected List("","") (sp("a.b") == List("a","b")) //expected (sp(".b") == List("","b")) //expected (sp("a.") == List("a")) //I would have expected List("a","") (sp("..") == List()) // I would have expected List("","","") (sp(".a.") == List("","a")) // I would have expected List("","a","") 所以我期望拆分会返回一个数组(数字一个分隔符出现)1个元素,但显然不是这样. 它几乎是上面的,但删除所有尾随的空字符串,但分裂空字符串不是这样. 我在这里没有确定模式. StringOps.split遵循哪些规则? 对于奖励积分,是否有一个好方法(没有太多的复制/字符串附加)来获得我期待的分裂? 解决方法
好奇,你可以在这里找到代码
请参阅split函数,并将字符作为参数(第206行). 我认为,这里的一般模式是,所有尾随的空分裂结果都被忽略了. 除了第一个,“如果没有找到分隔符char,那么只发送整个字符串”逻辑正在应用. 我试图找到有关这些的设计文档. 此外,如果您使用字符串而不是char作为分隔符,它将回退到java正则表达式拆分.正如@LRLucena所提到的,如果您为limit参数提供的值大于大小,则会得到尾随空结果.见http://docs.oracle.com/javase/7/docs/api/java/lang/String.html#split(java.lang.String,%20int) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |