比如分割空格字符串,python 是几个空字符串组成的数组,而 java 是空数组
>>> " ".split(" ")
['', '', '', '']
1
Luckyray 2019-05-28 17:16:33 +08:00 1
" ".split("\\ ",Integer.MAX_VALUE)这样可以。
|
2
qwerthhusn 2019-05-28 17:44:07 +08:00
用 Guava 的`com.google.common.base.Splitter.on(' ')`,String 的 split 接收的是一个正则表达式,有时在特殊字符条件下会用错。而 Guava 的那个完全就是按照字符去分,而且还跟你选项要不要把空串过滤掉,以及要不要对分割开的结果做 trim
|
3
kcirtap 2019-05-28 17:50:34 +08:00 via iPhone
查一下 google 很难吗
|
4
palmers 2019-05-28 18:44:57 +08:00
//4 个空格
String blank = " "; String[] split = blank.split("", 4); |
5
Cbdy 2019-05-28 18:48:17 +08:00 via Android
有的
|
6
c4f36e5766583218 2019-05-28 18:54:22 +08:00 1
有的,java 自带的不清楚。常用的第三方 jar 有
org.apache.commons.lang3.StringUtils#splitPreserveAllTokens(str, separatorChar) org.apache.commons.lang3.StringUtils#splitByWholeSeparatorPreserveAllTokens(str, separator) 或者 Guava(自己查) 以 jdk8 源码来看,String#split 里分两类一个是 fastpath 快速分割,另一个就是 Pattern#split... 两类方法都有 resultSize--;这样的一段代码,原来循环剔除末尾空字符串。所以就产生了 lz 的结果。 注意: java.lang.String#split(regex) 参数是一个正则字符串 |
7
c4f36e5766583218 2019-05-28 19:00:59 +08:00
resultSize--;是在 java.lang.String#split(regex, limit) limit==0 才生效,所以可以 input.split(" ", Integer.MAX_VALUE)
|
8
c4f36e5766583218 2019-05-28 19:06:49 +08:00
因 String#split 参数是一个正则字符串,如果你要按"abc"来分割会走到 Pattern#split,用正则来分割性能是没有纯字符处理方法快的,所以还是 commons-lang3/Guava 来处理比较好,比较一般项目都会用到这两个 jar/之一
|
9
fzy0728 2019-05-28 20:46:35 +08:00
有
|
10
tairan2006 2019-05-29 09:14:15 +08:00 via Android
谷歌一下很难么 还专门发帖
|