2017-05-23 44 views
-1

我有一個像如何閱讀特定的特殊字符

Str s1 = abd,jh 
Str2 = aa$$ab 

我想讀一下只有A,B和$字符串的字符串。

Str1 return false 
Str2 return true. 

我的代碼

public static boolean containsOtherCharacter(String str) { 
     String[] st = str.split(""); 
     for(int x = 0; x < st.length; x++) 
      if (st[x].compareTo("A") != 0 && st[x].compareTo("B") != 0 && st[x].compareTo("$") != 0) 
       return true; 
     return false; 
    } 

任何幫助如何閱讀。除此之外的任何其他值都應該被忽略。

+1

有啥特別之處特殊字符。循環字符串,檢查字符並比較它可以是一種粗糙的方式。 – Optional

+3

到目前爲止您嘗試過什麼? – Turing85

+0

類似於'[^ ab $] +'的正則表達式將指示是否還有其他字符。使用在線正則表達式測試器來充分開發和驗證正則表達式。 – KevinO

回答

4

你試圖在這裏過分複雜。你可以簡單地使用正則表達式,像

String s = "aa$$ab"; 
System.out.println(s.replaceAll("[ab$]", "").length()==0); 

它消除了a$bString。之後,如果長度大於0,則該字符串必須具有其他字符。 注意它是區分大小寫的。

+0

嚴重的問題:正在做一個正則表達式替換或正則表達式匹配更快?酷解決方案。 – KevinO

+0

我想檢查一下字符串是否只有這三個字符或其他字符。如果(st [x] .compareToIgnoreCase(「A」)!= 0 && st [x] .compareToIgnoreCase(「B」)不能從'「」替換並將長度設置爲0. –

+0

)!= 0 && st [x] .compareToIgnoreCase(「。」)!= 0)' –

0
public static boolean hasSpecialChar(String input) 
{ 
    boolean found = true; 
    int len = input.length(); 
    for(int i = 0; i< len ; i++) 
    { 
     if(input.charAt(i)== 97|| input.charAt(i)==98 ||input.charAt(i)==36) 
     { 
     // read the string 
     } 
     else 
     { 
      found = false; 
      return found; 
      // give out the error 
      } 
     } 
     return found ; 

    } 

當你只想讀a,b和$因此,我們可以使用字符的ASCII值,從而在由字符字符串或行字符閱讀並檢查輸入。由於a的ASCII值等於97,因此對於b而言,98和b的值爲36,這樣可以很好地處理這種情況。 希望是幫助你! @shanky辛格

+0

你應該真的使用字符「a」,「b」和「&」而不是整數代碼。更容易理解。 –

+0

是的,這可能是解決這個問題的另一種方法,因爲有很多方法可以解決同樣的問題。感謝您爲此解決方案添加其他方法。 –

+1

我認爲你錯過了這一點。您沒有在if(input.charAt)行的上方添加任何註釋,指示您使用整數代碼指示了哪些字符,因此如果用戶想了解自己寫的內容,就必須查看ASCII值。這是一個糟糕的編碼風格問題,而不是一種替代解決方案。 –

0

這裏是另一種方式來解決這個問題:

public static boolean containsOtherCharacter(String str) { 
      boolean The_answer=false; 
      int count0 = StringUtils.countMatches(str, "a"); 
      int count1 = StringUtils.countMatches(str, "b"); 
      int count2 = StringUtils.countMatches(str, "$"); 
      int ans=count0+count1+count2; 

      if(ans==str.length())The_anser=true; 

      return The_answer; 
    }