在Java中如何使用split()函数从短语中提取字符串

时间:2011-09-27 17:39:16

标签: java split

我可以使用split()函数从短语中提取字符串,并使用subphrases作为分隔符吗?例如,我有一个短语“强制字符串 - 任何string1 - 任何string2”。如何将带有分隔符的“Any string1”提取为“强制字符串”和“[a-zA-Z]”

这就是我试图提取的方式:

String str="Mandatory string - Any string1 - Any string2";
String[] result= str.split("Mandatory\\string\\s-\\s|\\s-\\s[a-zA-Z]+");

此代码的结果是

result = ["Mandatory string","ny string1","ny string2"]

但希望是:

result = ["Any string1"]

可以感谢一些帮助,谢谢。

4 个答案:

答案 0 :(得分:1)

首先,这里有一个拼写错误:

Mandatory\\string

这应该是

Mandatory\\sstring

无论如何,我要么使用“ - ”作为分隔符并获得第二个标记:

str.split(" - ")[1] // TODO: prod version should do bounds checking etc

或完全使用不同的工具,可能是与以下正则表达式匹配的正则表达式:

"Mandatory string - (.*) - .*"

带括号的捕获组将为您提供您所追求的字符串。

答案 1 :(得分:1)

String[] result= str.split("Mandatory\\s(1)string\\s-\\s|\\s-\\s[a-zA-Z\\s(2)]+");

你刚忘了位置(1)的“s” 位置(2)

应该有一个“\\ s”

试试这一行:
String[] result= str.split("Mandatory\\sstring\\s-\\s|\\s-\\s[a-zA-Z\\s]+");

答案 2 :(得分:0)

如果您的输入字符串有明确的格式,请将其拆分,然后使用所需的部分:

String[] resultArray = str.split(" - ");
String whatYouWant = resultArray[1];

答案 3 :(得分:0)

为什么不

String[] result = str.split(" - ");
return result.length < 2 ? "" : result[1];