以下代码:
String str = "She is a girl";
String[] substr = str.split("is");
substr[1]的输出是"a girl"。但我的预期是输出"是一个女孩"。我怎么解决这个问题?我可以根据token的索引拆分字符串吗?
使用正向向前看标记
String[] substr = str.split("(?=is)");
str.substring(str.indexOf("is"))
如果你想获得字符串的第一部分,你可以调用str.substring(0, str.indexOf("is"))
编辑:看看@Codebender的答案
由于split方法排除了令牌,因此程序的输出是正确的。根据您的需要,您可以使用substring
和index
代替split
,如下所示
String str = "She is a girl";
String substr1 = str.substring(str.indexOf("is"), str.length);
如果需要获取字符串的一部分,则首选substring。当您需要根据token将字符串拆分为多个字符串时,Split是很好的。
如果你想只使用分割或有多个标记,并希望包含标记,你可以使用forward标记
您可以使用replaceFirst
string.replaceFirst(".*?\b(is)\b", $1);
演示