Jus*_*ner 6 java regex string character
我有一些String只由数字组成,我想在角色改变时拆分它.
例如:
"11101100112021120" 去: {"111", "11", "11", "2", "2", "11", "2"}"222222222" 去 {"222222222"}"222222122" 去 {"222222", "1", "22"}"000000000" 去 {}"0000100000" 去 {"1"}"11121222212112133321" 去 {"111", "2", "1", "2222", "1", "2", "11", "2", "1", "333", "2", "1"}我想要一个很好的方法来做到这一点.
我知道两种方法:强制执行,或逐节添加.或者,我可以通过删除所有0并替换为0,然后在字符更改时添加0,然后在0上进行拆分,但这两种方式看起来都很愚蠢.如果有人对更好/更漂亮的方法有任何想法,正则表达式或逻辑,它会很好.
这似乎像你期望的那样工作
data.split("0+|(?<=([1-9]))(?=[1-9])(?!\\1)");
Run Code Online (Sandbox Code Playgroud)
测试:
String[] tests = { "11101100112021120", "222222222", "222222122",
"000000000", "0000100000", "11121222212112133321" };
for (String data : tests) {
System.out.println(data + " ->" + Arrays.toString(data.split("0+|(?<=([1-9]))(?=[1-9])(?!\\1)")));
System.out.println("-----------------------");
}
Run Code Online (Sandbox Code Playgroud)
输出:
11101100112021120 ->[111, 11, 11, 2, 2, 11, 2]
-----------------------
222222222 ->[222222222]
-----------------------
222222122 ->[222222, 1, 22]
-----------------------
000000000 ->[]
-----------------------
0000100000 ->[, 1] // <-- only problem - empty first element
-----------------------
11121222212112133321 ->[111, 2, 1, 2222, 1, 2, 11, 2, 1, 333, 2, 1]
-----------------------
Run Code Online (Sandbox Code Playgroud)
不幸的是,前导零会让数组包含额外的空字符串.要摆脱它,你可以提前删除这些零data.replaceFirst("^0+(?=[^0])", "")
| 归档时间: |
|
| 查看次数: |
2018 次 |
| 最近记录: |