gpt4 book ai didi

java - 为什么 Java 将字符串放在单词之前而不是之后?

转载 作者:塔克拉玛干 更新时间:2023-11-01 22:24:00 27 4
gpt4 key购买 nike

想从字符串值中获取<in>前后的单词

String ref = "application<in>rid and test<in>efd";
int result = ref.indexOf("<in>");
int result1 = ref.lastIndexOf("<in>");
String firstWord = ref.substring(0, result);
String[] wor = ref.split("<in>");
for (int i = 0; i < wor.length; i++) {
System.out.println(wor[i]);
}
}

我的预期输出

String[] output ={application,rid,test,efd}

我尝试了 2 个选项第一个 IndexOf但如果字符串有两个以上 <in>我没有得到预期的输出第二个split它也没有达到我的预期输出

请建议获取单词的最佳选择(<in> 之前和之后)

最佳答案

您可以使用这样的表达式:\b([^ ]+?)<in>([^ ]+?)\b (例如 here )。这应该匹配 <in> 之前和之后的字符串标记并将它们分成两组。

因此,鉴于此:

    String ref = "application<in>rid and test<in>efd";
Pattern p = Pattern.compile("\\b([^ ]+?)<in>([^ ]+?)\\b");
Matcher m = p.matcher(ref);
while(m.find())
System.out.println("Prior: " + m.group(1) + " After: " + m.group(2));

产量:

Prior: application After: rid
Prior: test After: efd

或者使用 split :

    String[] phrases = ref.split("\\s+");
for(String s : phrases)
if(s.contains("<in>"))
{
String[] split = s.split("<in>");
for(String t : split)
System.out.println(t);
}

产量:

application
rid
test
efd

关于java - 为什么 Java 将字符串放在单词之前而不是之后?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32754898/

27 4 0