字符串在数字和符号后分割

时间:2015-06-12 14:22:23

标签: java string split

我有一个示例字符串,例如

"ZZZ-1234567890-from ABC-2 DEF"

我需要输出:

"from ABC-2 DEF"

所有样本字符串的格式为

"ZZZ-numbers-Strings"

我需要在

后获取字符串部分

"ZZZ-numbers-"

我尝试使用split()但无法解决它。感谢帮助!

3 个答案:

答案 0 :(得分:1)

更新

再次阅读您的问题后,您知道String的格式为

" ZZZ号码串"并且你想要" ZZZ-numbers - "

之后的所有内容

然后你可以使用" ZZZ- \ d + - "的正则表达式模式进行拆分。这将产生一个2元素数组,您希望结果为索引1。

public static void main(String[] args) throws Exception {
    String data = "ZZZ-1234567890-from ABC-2 DEF";
    String[] split = data.split("ZZZ-\\d+-");
    System.out.println(split[0]); 
    System.out.println(split[1]); 
}

结果:

(blank line for split[0])
from ABC-2 DEF

OLD ANSWER

这看起来更像是substring()indexOf()的工作,只要"来自"在您的String中只存在一次,并且您希望捕获"之后的所有内容。包括"来自"。

public static void main(String[] args) throws Exception {
    String data = "ZZZ-1234567890-from ABC-2 DEF";
    System.out.println(data.substring(data.indexOf("from"))); 
}

结果:

来自ABC-2 DEF

答案 1 :(得分:1)

根据您的格式,您可能想删除第一部分“ZZZ-numbers - ”

使用replaceAll和正则表达式做的伎俩(灵感来自@ Shar1er80答案):

public static void main(String[] args) {
    String data = "ZZZ-1234567890-from ABC-2 DEF";
    System.out.println(data.replaceAll("^.{3}[-][0-9]+[-]","")); 
}

答案 2 :(得分:0)

轻松,使用String.split("ZZZ-\\d+-")[1]