Java 检查句子中的字符串顺序
我想知道一个词是否在另一个词之前出现。部分单词不匹配 一些示例测试: “嗨,我叫AB,我来自伦敦,我喜欢这里…”Java 检查句子中的字符串顺序,java,string,Java,String,我想知道一个词是否在另一个词之前出现。部分单词不匹配 一些示例测试: “嗨,我叫AB,我来自伦敦,我喜欢这里…” 您可以查看,它返回一个表示子字符串位置的整数,如果找不到,则返回-1。您可以使用它来查看哪些字符串先于另一个字符串 yourString.matches(".*? Hi\\b.*? AB\\b.*") 这将确保你在两个单词之间有空格,并且你在匹配整个单词 如果你处理的是拉丁美洲的东西,在这些东西中,puncuation可以出现在单词之前,这是更普遍的 yourString.matc
您可以查看,它返回一个表示子字符串位置的整数,如果找不到,则返回-1。您可以使用它来查看哪些字符串先于另一个字符串
yourString.matches(".*? Hi\\b.*? AB\\b.*")
这将确保你在两个单词之间有空格,并且你在匹配整个单词
如果你处理的是拉丁美洲的东西,在这些东西中,puncuation可以出现在单词之前,这是更普遍的
yourString.matches(".*?\\bHi\\b.*?\\bAB\\b.*")
打破你的习惯
.*? = anything, even the empty string. Ignore the ? for now.
\\b = a word boundary
所以regex的意思是
HiAB
这和
if "Hi" is before "AB" -> return true
它将被用作
if(yourString.matches(".*?\\bHi\\b.*?\\bAB\\b.*")){
return true;
}
您可以使用
indexOf
方法获取每个单词的第一个匹配项,然后进行检查。例如:
String sentence = "Hi my name is AB, I’m from London and I love it here …";
int fromIndex = sentence.indexOf("from");
int hiIndex = sentence.indexOf("Hi");
if (fromIndex < hiIndex)
System.out.println("false");
else
System.out.println("true");
String-句子=“嗨,我的名字是AB,我来自伦敦,我喜欢这里……”;
int fromIndex=句子.indexOf(“from”);
int hiIndex=句子.indexOf(“Hi”);
if(fromIndex
请注意,如果句子中不存在单词,则
indexOf
将返回-1
有几种方法:
- 使用-这可能是最简单的方法。获取字符串的索引,并进行比较。索引较低的字符串位于另一个字符串之前
- 使用正则表达式-构造一个正则表达式,以所需顺序匹配字符串,例如
。这种方法可能使用多个正则表达式“from.*?Hi”
注意:根据要求,当子字符串上的匹配出现假阳性时,您可能需要注意。如果您的要求是
“嗨,我的朋友AB”
应该匹配,但高于AB“
不应匹配,那么在单词两端带有\b
锚定的正则表达式方法将提供比操作字符串索引更简单的解决方案。上面的”from.*?Hi“
正则表达式变成”\\bfrom\\b.*\\bHi\\b”
字符串。匹配(“Hi..AB”);
使用正则表达式:“Hi my my name is AB,”.matches(“.*Hi.*AB.”
)-注意前导和尾随的*
,这是必要的,因为matches()
尝试匹配整个字符串。基本问题是:您想要实现什么?您将如何处理不同的输入,例如:“我来自伦敦,我说你好。我的名字是AB,我爱我的城市……”?你关心它是否是一个完整的单词吗?例如,你想让Hi与High这个词匹配吗?我想不,但如果是的话,这是一个未说明的要求。你能告诉我如何使用它吗。谢谢你,非常感谢,朋友。我有一个小问题,我有一些句子没有出现。我想这是当一个词出现在另一个词之前。。我使用的方法是在这个答案中,如果你看链接,我希望它显示找到的文本,即使一个词在另一个词之前找到…请让我知道如何修复它…它可能非常简单,但我不熟悉regexi如果你给我一个可能更容易的句子,我有很多句子mate lol…作为一个例子,您可以使用链接中使用的同一句话,即“Floyd Mayweather Jr是一名美国职业拳击手,目前作为职业拳击手不败,是一名五级世界冠军,在四个不同的重量级别赢得了十项世界冠军和直系冠军。”你想用什么来匹配这句话?@重复数据消除者谢谢你的评论!你是对的,误报可能是一个问题。我添加了一个注释来解释这一点。@dasblinkenlight谢谢你的回答。我不确定我是否可以,但我希望我可以接受多个答案,这样我也可以接受你的答案。
String sentence = "Hi my name is AB, I’m from London and I love it here …";
int fromIndex = sentence.indexOf("from");
int hiIndex = sentence.indexOf("Hi");
if (fromIndex < hiIndex)
System.out.println("false");
else
System.out.println("true");