Java 在字符串中搜索指定的单词
我想检查输入的特定单词是否在字符串中。我使用了以下代码:Java 在字符串中搜索指定的单词,java,string,contains,Java,String,Contains,我想检查输入的特定单词是否在字符串中。我使用了以下代码: import java.util.*; import java.io.*; public class StringTest { public static void main(String[] args) { Scanner s = new Scanner(System.in); String s1; s1 = s.next(); String s2 = "this
import java.util.*;
import java.io.*;
public class StringTest {
public static void main(String[] args) {
Scanner s = new Scanner(System.in);
String s1;
s1 = s.next();
String s2 = "this is an accomplishment";
if (s2.contains(s1)) {
System.out.println("you have done it");
} else
System.out.println("try another word");
}
}
如果我输入单词“com”,我会得到结果
你做到了
但“com”实际上只是“成就”一词的一部分。我希望这个案子的结果是
换一个词试试
因为
s2
不包含完整的单词“com”。我还尝试了indexOf()
,但也得到了相同的结果。我应该以什么方式继续?最好的正则表达式方法可能是
Pattern p = Pattern.compile("\\b" + Pattern.quote(s1) + "\\b");
if (p.matcher(s2).find()) { ... }
它处理单词边界和转义。请注意,编译模式不是免费的。最好的正则表达式方法可能是
Pattern p = Pattern.compile("\\b" + Pattern.quote(s1) + "\\b");
if (p.matcher(s2).find()) { ... }
它处理单词边界和转义。请注意,编译模式不是免费的。最好的正则表达式方法可能是
Pattern p = Pattern.compile("\\b" + Pattern.quote(s1) + "\\b");
if (p.matcher(s2).find()) { ... }
它处理单词边界和转义。请注意,编译模式不是免费的。最好的正则表达式方法可能是
Pattern p = Pattern.compile("\\b" + Pattern.quote(s1) + "\\b");
if (p.matcher(s2).find()) { ... }
它处理单词边界和转义。请注意,编译模式不是免费的。如果(s2.contains(s1))使用以下代码来代替:
if(Pattern.compile("\\b" + s1 + "\\b").matcher(s2).find())
确保导入java.util.regex.Pattern代码>
它将在s2
中搜索与s1
匹配的整个单词。有关更多信息,请参见以下页面:
- -编译正则表达式
- -获取一个
匹配器
,以搜索指定字符串中的正则表达式
- -如果找到匹配项,则返回true
或者,您可以使用
if(s2.matches(".*\\b" + s1 + "\\b.*"))
如果(s2.包含(s1))
,请使用以下代码代替:
if(Pattern.compile("\\b" + s1 + "\\b").matcher(s2).find())
确保导入java.util.regex.Pattern代码>
它将在s2
中搜索与s1
匹配的整个单词。有关更多信息,请参见以下页面:
- -编译正则表达式
- -获取一个
匹配器
,以搜索指定字符串中的正则表达式
- -如果找到匹配项,则返回true
或者,您可以使用
if(s2.matches(".*\\b" + s1 + "\\b.*"))
如果(s2.包含(s1))
,请使用以下代码代替:
if(Pattern.compile("\\b" + s1 + "\\b").matcher(s2).find())
确保导入java.util.regex.Pattern代码>
它将在s2
中搜索与s1
匹配的整个单词。有关更多信息,请参见以下页面:
- -编译正则表达式
- -获取一个
匹配器
,以搜索指定字符串中的正则表达式
- -如果找到匹配项,则返回true
或者,您可以使用
if(s2.matches(".*\\b" + s1 + "\\b.*"))
如果(s2.包含(s1))
,请使用以下代码代替:
if(Pattern.compile("\\b" + s1 + "\\b").matcher(s2).find())
确保导入java.util.regex.Pattern代码>
它将在s2
中搜索与s1
匹配的整个单词。有关更多信息,请参见以下页面:
- -编译正则表达式
- -获取一个
匹配器
,以搜索指定字符串中的正则表达式
- -如果找到匹配项,则返回true
或者,您可以使用
if(s2.matches(".*\\b" + s1 + "\\b.*"))
特别是,请注意contains()的作用。如果字符串中存在序列,则匹配。它无法区分该字符串中的单独单词。只要“com”出现在该字符串的任何位置,contains()就会返回true。您希望它只匹配整个单词,而contains()不匹配
如果给定字符串被空格或标点符号包围,则可以使用正则表达式进行匹配。请在上尝试Java教程
或者,更简单地说,您可以将字符串沿空格分开。String方法split()或其他扫描程序可以轻松地完成此操作。这将为您提供单个单词,Scanner类称为“tokens”,作为String类的实例。之后,使用equals()代替contains()。正则表达式也可以做到这一点,但一开始学习它们会更加累人(但完全值得)
特别是,请注意contains()的作用。如果字符串中存在序列,则匹配。它无法区分该字符串中的单独单词。只要“com”出现在该字符串的任何位置,contains()就会返回true。您希望它只匹配整个单词,而contains()不匹配
如果给定字符串被空格或标点符号包围,则可以使用正则表达式进行匹配。请在上尝试Java教程
或者,更简单地说,您可以将字符串沿空格分开。String方法split()或其他扫描程序可以轻松地完成此操作。这将为您提供单个单词,Scanner类称为“tokens”,作为String类的实例。之后,使用equals()代替contains()。正则表达式也可以做到这一点,但一开始学习它们会更加累人(但完全值得)
特别是,请注意contains()的作用。如果字符串中存在序列,则匹配。它无法区分该字符串中的单独单词。只要“com”出现在该字符串的任何位置,contains()就会返回true。您希望它只匹配整个单词,而contains()不匹配
如果给定字符串被空格或标点符号包围,则可以使用正则表达式进行匹配。请在上尝试Java教程
或者,更简单地说,您可以将字符串沿空格分开。String方法split()或其他扫描程序可以轻松地完成此操作。这将为您提供单个单词,Scanner类称为“tokens”,作为String类的实例。之后,使用equals()代替contains()。正则表达式也可以做到这一点,但一开始学习它们会更加累人(但完全值得)
特别是,请注意contains()的作用。如果字符串中存在序列,则匹配。它无法区分该字符串中的单独单词。只要“com”出现在该字符串的任何位置,contains()就会返回true。你希望它能匹配整个单词o