2013-01-17 55 views
0

我试图做这样的事情,但我似乎没有工作相匹配的Java分配到变量

String test = input.matches("[^a-zA-Z\\s]");

我得到一个错误说incompatible types

有什么办法解决这个或其他任何方法?

编辑

这就是我想要达到

可以说我有这个字符串

String full = " This i$ an aaasdAr yeEeeAs oofo qwdsgy XY9 ";

,我需要有输出$9

这个工作,但它有点太乱

for (int index = 0; index <= input.length() - 1; index ++) 
      { 
       if(String.valueOf(input.charAt(index)).matches("[^a-zA-Z\\s]")) 
      { 

      System.out.print(String.valueOf(input.charAt(index))); 
      } 
     } 
+5

'matches'返回'boolean',而不是'String'。阅读Javadoc。 –

+4

为了知道如何“修复”你的代码,我们需要知道你想要达到的目标。但是如果你看一下'matches'的文档,你应该能够理解为什么你当前的代码不工作。 –

+0

@JonSkeet修正了我的问题 – LegendaryLaggy

回答

1

为了解决您的具体问题,你可以使用String.replaceAll,这需要更换正则表达式:

String input = " This i$ an aaasdAr yeEeeAs oofo qwdsgy XY9 "; 
String output = input.replaceAll("[a-zA-Z\\s]", ""); 
System.out.println(output); 

这将替换与空字符串正则表达式匹配的一切,和它打印$9

4

matches返回boolean的方法。由于您试图将其分配给String,您将收到编译错误。