我需要在一个句子中找到整个单词,但不使用正则表达式。所以如果我想在这句话中找到“the”这个词:“快速的棕色狐狸跳过懒狗”,我正在使用:
String text = "the, quick brown fox jumps over the lazy dog";
String keyword = "the";
Matcher matcher = Pattern.compile("\\b"+keyword+"\\b").matcher(text);
Boolean contains = matcher.find();
但如果我用过:
Boolean contains = text.contains(keyword);
并用空格填充关键字,它不会在句子中找到第一个“the”,因为它没有环绕空格和标点符号。
要明确的是,我正在构建一个Android应用程序,而且我得到了内存泄漏,这可能是因为我在ListView中使用了正则表达式,所以它正在执行正则表达式匹配X的次,取决于Listview中的项目。
答案 0 :(得分:1)
如果您需要检查多个单词并执行没有正则表达式,则可以使用StringTokenizer并使用空格作为分隔符。
然后,您可以构建自定义搜索方法。否则,使用String.contains()
或String.indexOf()
的其他解决方案符合条件。
答案 1 :(得分:1)
您所做的就是搜索"the"
。然后,对于每个匹配,您将测试周围的字符是否为空格(或标点符号),或者匹配是否分别位于字符串的开头/结尾。
答案 2 :(得分:0)
将字符串拆分为空格,然后查看生成的数组是否包含您的单词。
答案 3 :(得分:0)
public int findWholeWorld(final String text, final String searchString) {
return (" " + text + " ").indexOf(" " + searchString + " ");
}
这将为您提供第一次出现单词“the”的索引,如果单词“the”不存在,则为-1。
答案 4 :(得分:0)
简单地遍历字符并将它们存储在char缓冲区中。每当你看到一个空格时,将缓冲区清空为一个单词列表,然后继续,直到你到达终点。
答案 5 :(得分:0)
在StringTokenizer.class的注释中:
StringTokenizer是一个保留的遗留类 兼容性原因虽然在新代码中不鼓励使用它。它是 建议任何寻求此功能的人都使用拆分 而是String的方法或java.util.regex包。
以下示例说明了String.split的方式 方法可用于将字符串分解为其基本标记:
String[] result = "this is a test".split("\\s");
for (int x=0; x<result.length; x++)
System.out.println(result[x]);
打印以下输出:
this
is
a
test
迭代生成的字符串数组并测试相等性并保持计数。
for (String s : result)
{
count++;
}
如果这是家庭作业,请告诉讲师阅读Java,时间已经改变。我记得在学校里有完全相同的愚蠢问题,没有什么能帮助你为现实世界做好准备。