1

什么是一个简洁的正则表达式,可以从不是字母表的字符串中删除所有内容

        BufferedReader br=new BufferedReader(new InputStreamReader(System.in));
    int T=0; 
    try{
        T= Integer.parseInt(br.readLine());

        while(T>0)
                String input=br.readLine();
                **String res= input.replaceAll("^[a-zA-Z]"," " );**
                System.out.println(res);

也试过

      input.replaceAll("[^a-zA-Z]]"," " )

他们都没有替换输入字符串中的任何内容。输入字符串保持原样

编辑:

         input.replaceAll("[^a-zA-Z]"," " )  //works well
         input.replaceAll("^[a-zA-Z]"," " )  //replaces first char of string
4

2 回答 2

4

你需要:

input = input.replaceAll("[^a-zA-Z]"," " );
^^^^^^^                          ^ ^

您需要将input引用指向该方法返回的 String 对象,replaceAll以获取更改后的字符串,因为 Strings 是不可变的。

范围A-z不是你想要的。你需要A-Z.

您的模式中还有一个额外]的。

看见

于 2012-11-11T07:46:35.397 回答
3

input.replaceAll("[^a-zA-z]","")是字符串常量池中的一个新字符串,您没有使用这个新内容设置您的字符串。请使用这个:

input = input.replaceAll("[^a-zA-z]","");
于 2012-11-11T07:43:48.587 回答