在字符串java中查找完整的单词

She*_*har 1 java

我正在写一段代码,其中我必须找到完整的单词,例如,如果我有

String str = "today is tuesday";
Run Code Online (Sandbox Code Playgroud)

我正在寻找"t"然后我找不到任何字眼.

任何人都可以告诉我如何在java中编写这样的程序?

bl4*_*0l7 7

我使用正则表达式执行此类任务.在你的情况下,它应该看起来像这样:

String str = "today is tuesday";
return str.matches(".*?\\bt\\b.*?"); // returns "false"

String str = "today is t uesday";
return str.matches(".*?\\bt\\b.*?"); // returns "true"
Run Code Online (Sandbox Code Playgroud)

一个简短的解释:

.匹配任何角色,*?是零或多次,\ b是单词边界.

对正则表达式的更多信息,可以发现这里还是专门为Java 这里


pol*_*nts 5

    String sentence = "Today is Tuesday";
    Set<String> words = new HashSet<String>(
        Arrays.asList(sentence.split(" "))
    );
    System.out.println(words.contains("Tue")); // prints "false"
    System.out.println(words.contains("Tuesday")); // prints "true"
Run Code Online (Sandbox Code Playgroud)

每个contains(word)查询都O(1)没有实现自己复杂的字典数据结构,如果你在文本中有很多单词要查找,这是最快最实用的解决方案.

这用于String.split" "分隔符上的句子中分离出单词.根据问题的定义方式,其他可能的变化是使用\b单词边界锚.这个问题是相当多的困难,如果你必须把自然语言的每个语法特点考虑在内(例如,"can't"由分裂\b"can""t").

通过使用传统的case规范化技巧,可以很容易地引入不区分大小写:split和hash sentence.toLowerCase(),看看是否存在contains(word.toLowerCase()).

也可以看看

  • 来自http://java.sun.com/javase/6/docs/api/java/util/HashSet.html"这个类为基本操作提供了恒定的时间性能(`add`,`remove`,`contains`和`size`),假设散列函数在桶中正确地分散元素." (2认同)