当前位置: 首页 > 知识库问答 >
问题:

Java:发现字符串中是否存在单词

姬选
2023-03-14

我想知道字符串是否是一个精确的单词,但例如,如果我这样做:

String s1="Welcome";
String s ="Welcomes to Tutorialspoint.com";
System.out.println(s.contains(s1));

它返回true,但我希望你给我返回false,因为在变量s中,单词欢迎而不是s1的单词欢迎。我如何继续?

共有3个答案

汪迪
2023-03-14

您可以拆分句子,然后将每个单词与s1进行比较。

String s1="Welcome";
String s ="Welcomes to Tutorialspoint.com";
String[] split = s.split(" ");
for (String s : split) {
  if (s.equals(s1)) {
    System.out.println(s);
    break; //optional
  }
}
潘佐
2023-03-14

使用“”。将()`与以下正则表达式匹配:

System.out.println(s.matches(".*\\b" + s1 + "\\b.*"));

有关更多信息,请参阅本教程和此问题。

此外,如果要忽略大小写,可以执行以下操作:

System.out.println(s.toUpperCase().matches(".*\\b" + s1.toUpperCase() + "\\b.*"))
谭山
2023-03-14

您可以使用

Arrays.asList(s.split("\\s+")).contains(s1)

您可以通过调整用于拆分的正则表达式来修改此解决方案以满足您的需求。例如,如果您想拆分任何非单词字符(即标点符号等),您可以使用\W

 类似资料:
  • 问题内容: 在Java中,有一种检查条件的方法: “此单个字符是否完全出现在字符串x中” 不使用循环? 问题答案: 你可以使用。 如果中存在,则返回。如果不是,则返回-1。因此,非负返回值表示。

  • 问题内容: 我的长字符串不适合屏幕的宽度。例如。 为了使阅读更容易,我想到了用这种方式编写它- 但是,我意识到第二种方法使用字符串连接,并会在内存中创建5个新字符串,这可能会导致性能下降。是这样吗 还是编译器足够聪明,以至于我只需要一个字符串就可以了?我如何避免这样做? 问题答案: 我意识到第二种方法使用字符串连接,并将在内存中创建5个新字符串,这可能会导致性能下降。 不,不会。由于这些是字符串文

  • 当使用文字创建字符串时,它会存储在池中。但当使用new运算符创建字符串对象时,它会将对象存储在堆中。 但是,堆中的对象只是一个指向存储在池中的文本的指针,还是一个存储在堆中的简单字符串对象,符合GC的条件?

  • 如果两个英语单词只包含相同的字母,则它们是相似的。例如,食物和好东西并不相似,但狗和好东西是相似的。(如果A与B相似,则A中的所有字母都包含在B中,B中的所有字母都包含在A中。) 给定一个单词W和一个单词L列表,查找L中与W相似的所有单词。将字数打印到标准输出。 例子: 输入(标准输入): 输出(标准输出): 说明: L中与love相似的词是:velo vole love volvell love

  • 问题内容: 如何判断子字符串“模板”(例如)是否存在于String对象中? 如果不是区分大小写的检查,那就太好了。 问题答案: 使用正则表达式并将其标记为不区分大小写: 在 (我)* 不区分大小写和转弯 **。 在搜索项的每一端匹配任何字符周围(因为 String.matches 适用于整个字符串)。

  • 问题内容: 但 为什么仅在分配字符串时才获得相同的id()结果? 编辑:我用“字符串”代替“ ASCII字符串”。感谢您的反馈 问题答案: 这与ASCII与非ASCII无关(您的“非ASCII”仍然是ASCII,只是标点符号,而不是字母数字)。CPython作为实现细节,将仅包含“名称字符”的字符串常量进行实习。在这种情况下,“名称字符”与正则表达式转义的含义相同:字母数字加下划线。 注意:这可以