从字符串中删除特殊字符和数字但忽略单词之间的空格?

时间:2017-04-04 18:12:07

标签: java android

我想要一个可以像这样转换这个简单句子的java正则表达式:

1) I am a (happy) person!!!

I am a happy person.

即。忽略所有数字和特殊字符,但忽略单词之间的空格。

我现在正在使用这个正则表达式:

("\\P{L}", "")

但它提供的输出如下:

Iamahappyperson

感谢您的帮助!!

4 个答案:

答案 0 :(得分:3)

使用此正则表达式[^\p{Alpha} ]

  • \p{Alpha}字母字符:[\p{Lower}\p{Upper}]
  • [^\p{Alpha} ]除字母和空格外的所有字符

以下是如何使用它:

System.out.println("1) I am a (happy) person!!!".replaceAll("[^\\p{Alpha} ]", ""));

如果您想保留unicode字母字符,请在上述正则表达式的开头添加(?U)。在(?U)开启UNICODE_CHARACTER_CLASS标记

答案 1 :(得分:0)

System.out.println("I am a (happy) person!!!".replaceAll("[^\\p{L}\\p{Z}]", ""));

打印出“我是一个快乐的人”

答案 2 :(得分:-1)

尝试使用此方法

String new_string = "I am a (happy) person!!!".replaceAll("[^a-zA-Z ]+","");

代码:

public class HelloWorld
{  public static void main(String[] args)
  {

    String new_string = "I am a (happy) person!!!".replaceAll("[^a-zA-Z ]+","");
    System.out.print(new_string);

  }
}

输出:我是一个快乐的人

答案 3 :(得分:-1)

[a-zA-Z\d\s]如果你想保留字母数字和空格。

[a-zA-Z\s]仅适用于alpha和space。