我有一个我要拆分的字符串;
String x = "abc4.5efg2hij89k.9";
我希望输出为
abc, 4.5, efg, 2, hij, 89, k, .9
我可以很容易地分割数字和非数字但是'。'被认为是一个角色。
x.split("(?<=\\D)(?=\\d)|(?<=\\d)(?=\\D)")
[abc, 4, ., 5, efg, 2, hij, 89, k., 9]
支持双打的最佳方式是什么?
答案 0 :(得分:5)
您是否考虑过字母字符而不是使用\D
令牌?
String s = "abc4.5efg2hij89k.9";
String[] parts = s.split("(?<=[a-z])(?=[\\d.])|(?<=\\d)(?=[a-z])");
System.out.println(Arrays.toString(parts));
输出
[abc, 4.5, efg, 2, hij, 89, k, .9]
答案 1 :(得分:1)
您可以进行匹配而不是拆分,然后将匹配存储到数组列表中。
[^\\d.]+|\\d*(?:\\.\\d+)?
String x = "abc4.5efg2hij89k.9";
Pattern regex = Pattern.compile("[^\\d.]+|\\d*(?:\\.\\d+)?");
Matcher matcher = regex.matcher(x);
ArrayList<String> returnValue= new ArrayList<String>();
while(matcher.find())
{
if(matcher.group().length() != 0)
{
returnValue.add(matcher.group());
}
}
System.out.println(returnValue);
输出:
[abc, 4.5, efg, 2, hij, 89, k, .9]
答案 2 :(得分:0)