什么是简洁的常规正则表达式,以从非字母表的字符串中删除所有内容
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
答案 0 :(得分:4)
你需要:
input = input.replaceAll("[^a-zA-Z]"," " );
^^^^^^^ ^ ^
您需要将input
引用指向replaceAll
方法返回的String对象,以获取更改的字符串,因为字符串是不可变的。
范围A-z
不是您想要的。您需要A-Z
。
您的模式中还有额外的]
。
答案 1 :(得分:3)
input.replaceAll("[^a-zA-z]","")
是String常量池中的新字符串,您不会使用此新内容设置字符串。请使用此:
input = input.replaceAll("[^a-zA-z]","");