为什么java 根据“ | 您所在的位置:网站首页 › 双斜杠算几个字符 › 为什么java 根据“ |
在java开发中,常常需要将字符串分隔成字符串数组,再进行操作,比如String str = "aa|bb|cc|||",我们原意是想调用str .split("|")将它根据"|"分隔,预想会分成"aa","bb","cc","","",""6个子串。但实际结果如下: 为什么呢,我们看下jdk原码,String.split的参数是一个正则表达式,而在正则表达式中,| 表示或的意思,它表示匹配左边或右边的内容。而"|"的意思自然就是匹配空了,所以原字符串会被分隔成一个一个的字符。
所以呢,我们需要将|转义,即 以String bArr[] = str.split("\\|");这种形式分隔,但是问题又出现了,预期6个子串,实际得到了3个 再看原码 public String[] split(String regex) { return split(regex, 0); },它实际调用了两参的split方法,而第二个参数说明如下:就是说第二个参数默认为0,原字符串后面被切割成空串的部分都会被丢弃,当此参数为正数时,最多切割不超过此正数次,为负数时则全部切割,所以如果我们的字符串如果预想切割成6个子串,可以使用以下写法: String bArr[] = str.split("\\|", -1); |
CopyRight 2018-2019 实验室设备网 版权所有 |