Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 搜索字符串中的关键字_Java_String - Fatal编程技术网

Java 搜索字符串中的关键字

Java 搜索字符串中的关键字,java,string,Java,String,我想写一个方法,如果在字符串中找到关键字,则返回true,否则返回false。我知道了怎么做,但是当关键字类似于“cat”并且字符串是“潜在客户上有一只毛毛虫”时,即使cat不在字符串中,它也会返回true。 我做错了什么 public布尔值(字符串消息、字符串关键字){ if(message.contains(关键字)){ 返回true; } 返回false; } 解决这个问题的方法有很多。问题是,当您使用contains()时,它会在完整字符串中查找该子文本,但您只想查看单词 因此,使用空格

我想写一个方法,如果在字符串中找到关键字,则返回true,否则返回false。我知道了怎么做,但是当关键字类似于“cat”并且字符串是“潜在客户上有一只毛毛虫”时,即使cat不在字符串中,它也会返回true。 我做错了什么

public布尔值(字符串消息、字符串关键字){
if(message.contains(关键字)){
返回true;
}
返回false;
}

解决这个问题的方法有很多。问题是,当您使用contains()时,它会在完整字符串中查找该子文本,但您只想查看单词

因此,使用
空格
作为分隔符,将字符串拆分为单词列表/数组。然后检查数组/列表是否包含该单词

public static void main (String ...args) {
        String input = "There is a caterpillar on a lead";
        String wordToFind = "cat";

        String[] split = input.split(" ");
        Arrays.stream(split).forEach(System.out::println);
        boolean exists = Arrays.asList(split).contains(wordToFind);
        System.out.println(exists);
}

有很多方法可以解决这个问题。问题是,当您使用contains()时,它会在完整字符串中查找该子文本,但您只想查看单词

因此,使用
空格
作为分隔符,将字符串拆分为单词列表/数组。然后检查数组/列表是否包含该单词

public static void main (String ...args) {
        String input = "There is a caterpillar on a lead";
        String wordToFind = "cat";

        String[] split = input.split(" ");
        Arrays.stream(split).forEach(System.out::println);
        boolean exists = Arrays.asList(split).contains(wordToFind);
        System.out.println(exists);
}

您可以使用
regex
来解决您的问题。你想找到一只周围没有人物的猫。如果在正则表达式中进行翻译,您将得到:

\\Wcat\\W
此处
\W
表示非单词字符。非单词字符由除
[A-zA-z_0-9]
以外的所有字符组成

所以基本上我们在寻找5个字符,一个非单词字符,后跟c-a-t,最后一个字符也是非单词字符

以下是执行此操作的代码:

String str = "My favourite animal are cat, dog and mice.";

//Set the regex
Pattern pattern = Pattern.compile("\\Wcat\\W");
//Set the string
Matcher matcher = pattern.matcher(str);

//Check for a match
if (matcher.find()) System.out.println("Word found at index: " + matcher.start());
else System.out.println("No match found!");
输出:

Word found at index: 23

我希望我已经帮了你。

你可以使用
regex
来解决你的问题。你想找到一只周围没有人物的猫。如果在正则表达式中进行翻译,您将得到:

\\Wcat\\W
此处
\W
表示非单词字符。非单词字符由除
[A-zA-z_0-9]
以外的所有字符组成

所以基本上我们在寻找5个字符,一个非单词字符,后跟c-a-t,最后一个字符也是非单词字符

以下是执行此操作的代码:

String str = "My favourite animal are cat, dog and mice.";

//Set the regex
Pattern pattern = Pattern.compile("\\Wcat\\W");
//Set the string
Matcher matcher = pattern.matcher(str);

//Check for a match
if (matcher.find()) System.out.println("Word found at index: " + matcher.start());
else System.out.println("No match found!");
输出:

Word found at index: 23

我希望我已经帮助了您。

我将避免将字符串作为数组运行

这将浪费时间,尤其是在长文本上,当你必须浏览时。 但是,您可以在开头添加一个空字符,并在开头和结尾使用空字符串搜索关键字

public布尔值(字符串消息、字符串关键字){
返回“.concat(message).concat(“”)。包含(“+关键字+”);
}

在一行中执行。

我会避免将字符串作为数组运行

这将浪费时间,尤其是在长文本上,当你必须浏览时。 但是,您可以在开头添加一个空字符,并在开头和结尾使用空字符串搜索关键字

public布尔值(字符串消息、字符串关键字){
返回“.concat(message).concat(“”)。包含(“+关键字+”);
}

只需一行即可完成。

如果看不到您的代码,很难说!添加您尝试过的内容。您考虑过使用吗?您知道为什么它不起作用吗?如果没有看到您的代码,很难说!添加您尝试过的内容。您考虑过使用吗?您知道为什么它不起作用吗?如果字符串是:
one cat,two dog
,我在空格上拆分并搜索
cat
,会找到吗?在拆分之前删除特殊字符。如果字符串是:
one cat,two dog
,我在空格上拆分并搜索
cat
,会找到吗?在拆分之前删除特殊字符。它不适用于一只猫,两只狗。我检查了问题。他在搜索关键词,而不是关键词短语。但是无论如何:将关键字设为关键字.trim(),它将适用于整个Phase,包括前后的空格。它不适用于一只猫,两只狗。我检查了问题。他在搜索关键词,而不是关键词短语。但是无论如何:将关键字设为keyWord.trim(),它将适用于整个Phase,包括前后的空格。