2013-04-23 118 views
1

任何Android專家請幫忙用輸入過濾器忽略字符-android忽略特殊字符輸入

我成立專班這樣做,但所有字符都被忽略.....

public class InputFilterReservedCharacters implements InputFilter { 

    @Override 
    public CharSequence filter(CharSequence source, int start, int end, 
     Spanned dest, int dstart, int dend) { 
     try { 
     if (end > start) { 
      for (int index = start; index < end; index++) { 
       if (source.charAt(index) == "-".toCharArray()[0]) { 
        return ""; 
       } 
      } 
     } 
     } catch (NumberFormatException nfe) { 
     } 
     return ""; 
    } 
} 

感謝StoneBird您有幫助的評論,我想用戶除了可以輸入任何東西的「 - 」。我得到它的工作是這樣的:

@Override 
public CharSequence filter(CharSequence source, int start, int end, 
     Spanned dest, int dstart, int dend) { 

    String returnValue = ""; 

    try { 
     if (end > start) { 
      for (int index = start; index < end; index++) { 
       if (source.charAt(index) != '-'){ 
        returnValue = Character.toString(source.charAt(index)); 
       } 
      } 
     } 
    } catch (NumberFormatException nfe) { 
    } 
    return returnValue; 
} 
+0

通過忽略你的意思,你想從字符串中刪除' - '? – wtsang02 2013-04-23 17:19:18

回答

0

你的代碼if (source.charAt(index) == "-".toCharArray()[0]) {return "";}意味着,如果該函數發現-那麼函數將返回""作爲結果,並從而結束該功能的執行。這就是爲什麼你每次都會得到空的結果,因爲過濾器正在工作,並且正在做你想讓它返回的東西。 嘗試在函數中創建一個空字符串,將所有「有用」字符連接到該字符串,然後返回該字符串。

public class InputFilterReservedCharacters implements InputFilter { 

@Override 
public CharSequence filter(CharSequence source, int start, int end, 
    Spanned dest, int dstart, int dend) { 
    private CharSequence result = ""; //change here 
    try { 
    if (end > start) { 
     for (int index = start; index < end; index++) { 
      if (source.charAt(index) != "-".toCharArray()[0]) { //change here 
       result+=source.charAt(index); 
      } 
     } 
    } 
    } catch (NumberFormatException nfe) { 
    } 
    return result; //and here 
} 
} 

而且我相信使用'-'而不是雙引號給你一個字符,所以你不需要將其轉換爲字符數組。