Input1 = input.replaceAll 不工作

Input1 = input.replaceAll not working

所以我有一个扫描器,它接收一个字符串并将其保存到输入中,然后我尝试这样做

    input.replaceAll("?/.,!' ", ""); 

并打印下面的行来测试它,但它并没有替换任何东西

    import java.util.Scanner;

    public class Test2 {
        public static void main (String[]args){
            Scanner sc = new Scanner (System.in);
            System.out.print("Please enter a sentence: ");
            String str = sc.nextLine();

            int x, strCount = 0;
            String str1;

            str1 = str.replaceAll(",.?!' ", "");

            System.out.println(str1);

            for (x = 0; x < str1.length(); x++)
            {
                strCount++;
            }
            System.out.println("Character Count is: " + strCount);

       }

    }

这是我正在使用的代码。我只需要将所有标点符号和空格替换为空即可。

这一行:

str.replaceAll(",.?!' ", "");

将搜索整个字符串 ",.?!' “ 将被替代。 replaceAll 方法的参数是一个正则表达式。

所以,这样的东西肯定会更好:

str.replaceAll("[,.?!' ]", "");

除非字符 ,.?! 在输入 String 中一起出现,否则不会进行替换。您可以使用字符 class 来指定字符范围

str1 = str.replaceAll("[,.?!' ]", "");

replaceAll 将正则表达式作为第一个参数,因此需要格式化为:

str1 = str.replaceAll("[,.?!' ]", "");

更多信息:http://www.regular-expressions.info/tutorial.html

第一个参数必须是正则表达式,这里是替代字符类 [ ... ].

String str1 = str.replaceAll("[?/.,!' ]", "");

或更广义的 s=whitespace, Punct=punctuation:

String str1 = str.replaceAll("[\s\p{Punct}]", "");