好的,我的问题是我希望能够解析一个字符串并将其拆分,保留一些分隔符并删除其他字符串。
假设我的输入字符串为1.8.0a
。我希望能够将字符串放入数组中,
[1, 8, 0, a]
。我见过other SO questions,最好的答案就是我想要的。我目前的代码是:
String[] array = s.split("[-._[?<=a[b[r]]]]");
唯一的问题是我的输出是
[1, 8, 0]
编辑:
以下是一些例子:
输入:1.18.0a
输出:[1, 18, 0]
预期输出:[1, 18, 0, a]
输入:1.22.0r
输出:[1, 22, 0]
预期输出:[1, 22, 0, r]
另外,我使用了括号,
String[] array = s.split("[-._(?<=a[b[r]])]");
仍无济于事。
答案 0 :(得分:0)
如果您只想处理这样的版本字符串,我个人会逐字逐句地遍历字符串,将字符复制到StringBuilder中直到我到达分隔符,然后将StringBuilder转换为String并将其存储在数组中。这将允许我考虑从数字到字母的切换作为“分隔符”。
然而,我发现正则表达式非常不透明。它们在某些情况下很有用,但有时简单的Java代码虽然更冗长,但更简单易懂。
答案 1 :(得分:0)
看起来你想要拆分
-
.
_
在这种情况下,您可以尝试使用
yourText.split("[-._]|(?<=[0-9])(?=[a-zA-Z])")
答案 2 :(得分:0)
您可以使用以下正则表达式:
String[] array = s.split("[-._]|(?=[abr])");
请参阅Ideone Demo
输出:
[1, 18, 0, a] //for input = "1.18.0a"