我正在写一段代码,其中我必须找到完整的单词,例如,如果我有
String str = "today is tuesday";
Run Code Online (Sandbox Code Playgroud)
我正在寻找"t"然后我找不到任何字眼.
任何人都可以告诉我如何在java中编写这样的程序?
我使用正则表达式执行此类任务.在你的情况下,它应该看起来像这样:
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 这里
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()).
| 归档时间: |
|
| 查看次数: |
11468 次 |
| 最近记录: |