加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

用char分割字符串

发布时间:2020-12-16 09:55:13 所属栏目:安全 来源:网络整理
导读:scala有一种在StringOps.split中拆分字符串的标准方法 但是这种行为让我感到有些惊讶. 为了演示,使用快速便利功能 def sp(str: String) = str.split('.').toList 以下表达式都评估为true (sp("") == List("")) //expected(sp(".") == List()) //I would have
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)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读