2015-05-26 52 views
0

好的,所以我的问题是我想能够解析一个字符串并拆分它,保留一些分隔符和删除其他分隔符。分割一个字符串,删除一些分隔符,但保留其他

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

仍然没有一个韦尔。

+1

你必须再举几个例子才能得到一个好的答案。例如,“1.18.0a”和“1.8.10a”的输出是什么? – dcsohl

+0

还要记住,您链接的另一个问题使用了lookarounds,并且该语法带有括号。你错过了括号,所以这可能是你的问题。 '(?<= x)'是一个向后看,但没有括号它不会做你想做的。 – dcsohl

回答

0

它看起来像你想在-._

  • 或数字与字母之间的分裂

    在这种情况下,你可以用

    yourText.split("[-._]|(?<=[0-9])(?=[a-zA-Z])") 
    
  • +0

    解决!非常感谢!! –

    0

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

    但是,我发现正则表达式很不透明。它们在某些情况下很有用,但有时使用简单的Java代码,但更为详细,更简单易懂。

    0

    尝试你可以使用下面的正则表达式:

    String[] array = s.split("[-._]|(?=[abr])"); 
    

    Ideone Demo

    输出:

    [1, 18, 0, a]   //for input = "1.18.0a" 
    
    相关问题