最近 JAVA 程式遇到一個奇怪錯誤
使用 split 針對 data 做分割
切割符號為 ^
最後發現是後面空白會合併空白
1 | public class MyClass { |
得到結果會是
1 | ^ 分隔符返回值 : |
後面的^資料都是空白的話,都不會在陣列
我一直以為別的程式語言也是這樣
JavaScript
1 | "1^2^3^4^5^^^^".split('^') |
等一下,Java 這邊好像是用 Regex
馬上找一下方法嘗試
1 | "1^2^3^4^5^^^^".split(/\^/) |
結果還是一樣
PHP
1 | var_dump(explode("^","1^2^3^4^5^^^^")); |
1 | var_dump( preg_split("/\\^/", "1^2^3^4^5^^^^")); |
都是
1 | array(9) { |
結果
Java 處理 Split 機制不太一樣
這邊可以看看 split 可以帶第二個參數
String.split()與com.sun.deploy.util.StringUtils.split()的區別
String.split()与StringUtils.split()的区别_卡卡_西瓜的博客-CSDN博客
1 | import com.sun.deploy.util.StringUtils; |
apache 結果會跟下面一樣
找到我們想要的
org.apache.commons.lang3.StringUtils#splitPreserveAllTokens(str, separatorChar)
StringUtils (Apache Commons Lang 3.11 API)
org.apache.commons.lang3.StringUtils#splitByWholeSeparatorPreserveAllTokens(str, separator)
歡呼!!
Java 有沒有像 Python 一樣的 split? - 摸鱼
看來還滿多人苦惱這個
詳細解說
有爬到這篇Java 字符串 split 踩坑记
com.google.common.base.Splitter 這個比較是接近我們想要的