拆分一个字符串,删除一些分隔符但保留其他分隔符

时间:2015-05-26 17:28:46

标签: java regex

好的,我的问题是我希望能够解析一个字符串并将其拆分,保留一些分隔符并删除其他字符串。

假设我的输入字符串为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]])]");

仍无济于事。

3 个答案:

答案 0 :(得分:0)

如果您只想处理这样的版本字符串,我个人会逐字逐句地遍历字符串,将字符复制到StringBuilder中直到我到达分隔符,然后将StringBuilder转换为String并将其存储在数组中。这将允许我考虑从数字到字母的切换作为“分隔符”。

然而,我发现正则表达式非常不透明。它们在某些情况下很有用,但有时简单的Java代码虽然更冗长,但更简单易懂。

答案 1 :(得分:0)

看起来你想要拆分

  • on - . _
  • 或数字和字母字符之间。

在这种情况下,您可以尝试使用

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"
相关问题