2016-02-25 110 views
1

我正在讀傳感器的內存,我想確保返回的字符串是有效的字符串,因爲它有時會從內存中返回垃圾值。 我想跳過那些垃圾值。 我知道我可以使用模式java:檢查除特殊字符以外的字符串

Pattern pat = Pattern.compile("[^a-z0-9 ]", Pattern.CASE_INSENSITIVE); 
Matcher mat = pat.matcher("My Test String"); 
if(mat.find()) 
{ 
    System.out.println("String contains special character!"); 
} 

但這些特殊字符[字符串查詢字符串包含特殊字符,/ @:;?#!「£$%^ & *()_ + = - 〜 > < |`]應該是有效的字符串,但不是垃圾(像)

在此先感謝

回答

2

您可以去除這樣的「無效」字符。

text = text.replaceAll("[^\u0020-\u007e]+", ""); 
+0

這是完美的..謝謝:) – Ana

2

這是很容易的,只需要在模式中添加這些特殊字符,它應該是罰款

Pattern pat = Pattern.compile("[^a-z0-9 {},./[email protected]:;#!£$%^&*()_+=-~><|`]", Pattern.CASE_INSENSITIVE); 
     Matcher mat = pat.matcher("My Test String"); 
     if(mat.find()) 
     { 
      System.out.println("String contains special character!"); 
     } 

它不會接受除這些以外的任何其他字符。

+0

我懷疑這會工作,你就需要逃跑'*'和'+'(也可能是其他特殊字符) –

+0

這對我的作品。只有雙引號'「'不起作用。 ..但是,其他答案是更準確的提問已被接受無論如何。 –

相關問題