Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/27.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_Replace_Replaceall - Fatal编程技术网

Java 如果一个关键词是独立词,我如何替换它?

Java 如果一个关键词是独立词,我如何替换它?,java,string,replace,replaceall,Java,String,Replace,Replaceall,例如,如果我要做一个关键词ball,那么我需要一句话,他抓球是因为他在打棒球,他抓XXXX是因为他在打棒球。相反,我让他抓住了XXXX,因为他在打垒XXXX。我使用的是replaceAll,这就是为什么我会出现这个错误,但我想知道是否有一种方法可以让我检查是否有一个字符之后不是空白,并且只有在有空白或特殊字符时才替换这个单词。我之所以苦苦挣扎,是因为如果单词后面跟一个特殊字符,而不是一个字母,我仍然希望它被替换 您可以使用一个注释,说明您必须避开反斜杠。单词边界\b还负责标点符号: System

例如,如果我要做一个关键词ball,那么我需要一句话,他抓球是因为他在打棒球,他抓XXXX是因为他在打棒球。相反,我让他抓住了XXXX,因为他在打垒XXXX。我使用的是replaceAll,这就是为什么我会出现这个错误,但我想知道是否有一种方法可以让我检查是否有一个字符之后不是空白,并且只有在有空白或特殊字符时才替换这个单词。我之所以苦苦挣扎,是因为如果单词后面跟一个特殊字符,而不是一个字母,我仍然希望它被替换

您可以使用一个注释,说明您必须避开反斜杠。单词边界\b还负责标点符号:

System.out.println("He caught the ball because he was playing baseball"
            .replaceAll("\\bball\\b", "XXXX"));
System.out.println("One ball, two cats. Two cats with a ball."
            .replaceAll("\\bball\\b", "XXXX"));
System.out.println("A ball? A ball!".replaceAll("\\bball\\b", "XXXX"));
印刷品:

He caught the XXXX because he was playing baseball
One XXXX, two cats. Two cats with a XXXX.
A XXXX? A XXXX!
您可以使用一个注释,说明必须避开反斜杠。单词边界\b还负责标点符号:

System.out.println("He caught the ball because he was playing baseball"
            .replaceAll("\\bball\\b", "XXXX"));
System.out.println("One ball, two cats. Two cats with a ball."
            .replaceAll("\\bball\\b", "XXXX"));
System.out.println("A ball? A ball!".replaceAll("\\bball\\b", "XXXX"));
印刷品:

He caught the XXXX because he was playing baseball
One XXXX, two cats. Two cats with a XXXX.
A XXXX? A XXXX!
试试这个:

    String s = "He caught the ball because he was playing baseball";
    String replaceKey = "ball";
    String replaceValue = "XXXX";

    String[] sArray = s.split(" ");

    String finalS = "";
    for(int i=0; i<sArray.length;i++) {
        if(replaceKey.equals(sArray[i])){
            sArray[i] = replaceValue;
        }
    }

    System.out.println(String.join(" ", sArray));
输出:!XXXX?ball1 XXXX!棒球1 XXXX,1篮球1棒球学士

希望有帮助

试试这个:

    String s = "He caught the ball because he was playing baseball";
    String replaceKey = "ball";
    String replaceValue = "XXXX";

    String[] sArray = s.split(" ");

    String finalS = "";
    for(int i=0; i<sArray.length;i++) {
        if(replaceKey.equals(sArray[i])){
            sArray[i] = replaceValue;
        }
    }

    System.out.println(String.join(" ", sArray));
输出:!XXXX?ball1 XXXX!棒球1 XXXX,1篮球1棒球学士


希望有帮助

@marvin不符合标准;您需要使用单词边界,而不是空格。请参见此处:@marvin不符合标准;你需要使用单词边界,而不是空格。请看这里:关于OP:I'm Stughting中所问的特殊字符,是因为如果后面跟一个特殊字符,我仍然希望该单词被替换,但是不是一个字母。关于OP中的特殊字符呢:我很挣扎是因为我仍然希望这个单词后面跟一个特殊字符,而不是一个字母,那么这个单词应该被替换掉。