The*_*imp 51 java regex string
我正在尝试找出一种在java中拆分字符串的方法,它遵循如下模式:
String a = "123abc345def";
Run Code Online (Sandbox Code Playgroud)
结果如下:
x[0] = "123";
x[1] = "abc";
x[2] = "345";
x[3] = "def";
Run Code Online (Sandbox Code Playgroud)
但是我完全不知道如何才能实现这一目标.请有人帮帮我吗?我尝试在线搜索类似的问题,但是在搜索中正确地表达它是非常困难的.
请注意:字母和数字的数量可能会有所不同(例如,可能会出现像'1234a5bcdef'这样的字符串)
Qta*_*tax 87
您可以尝试拆分(?<=\D)(?=\d)|(?<=\d)(?=\D),例如:
str.split("(?<=\\D)(?=\\d)|(?<=\\d)(?=\\D)");
Run Code Online (Sandbox Code Playgroud)
它匹配数字和非数字之间的位置(以任何顺序).
怎么样:
private List<String> Parse(String str) {
List<String> output = new ArrayList<String>();
Matcher match = Pattern.compile("[0-9]+|[a-z]+|[A-Z]+").matcher(str);
while (match.find()) {
output.add(match.group());
}
return output;
}
Run Code Online (Sandbox Code Playgroud)
你可以试试这个:
Pattern p = Pattern.compile("[a-z]+|\\d+");
Matcher m = p.matcher("123abc345def");
ArrayList<String> allMatches = new ArrayList<>();
while (m.find()) {
allMatches.add(m.group());
}
Run Code Online (Sandbox Code Playgroud)
结果(allMatches)将是:
["123", "abc", "345", "def"]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
85633 次 |
| 最近记录: |