Java按标记拆分String

时间:2015-07-20 03:27:55

标签: java regex string

以下代码:

String str = "She is a girl";
String[] substr = str.split("is");

substr [1]的输出是"一个女孩"。但我的预期是输出"是一个女孩"。我怎么解决这个问题?我可以根据令牌索引来分割字符串吗?

4 个答案:

答案 0 :(得分:4)

使用正向前瞻标记。

String[] substr = str.split("(?=is)");

答案 1 :(得分:3)

str.substring(str.indexOf("is"))

如果您想获得字符串的第一部分,可以致电str.substring(0, str.indexOf("is"))

编辑:查看@Codebender的答案 它更适合这个问题。

答案 2 :(得分:0)

由于split方法排除了令牌,因此程序的输出是正确的。根据您的需要而不是split,您可以使用substringindex,如下所示

String str = "She is a girl";
String substr1 = str.substring(str.indexOf("is"), str.length);

如果需要获取字符串的一部分,则首选子字符串。当你需要根据令牌将字符串分成多个字符串时,拆分是很好的。

如果您只想使用拆分或拥有多个令牌,并且还希望包含令牌,则可以使用look ahead token

答案 3 :(得分:0)

您可以使用replaceFirst

string.replaceFirst(".*?\\b(is)\\b", $1);

DEMO