2011-07-22 44 views
1

在EditText中輸入字符串例如「Love is Life」時,輸入單詞「Love」後輸入空格,然後如果點擊字母'i'後自動需要將其更改爲大寫信'我'。在android中輸入字符串時替換字符串

這意味着字符串的每個空格之後的字符需要在大寫字母中,並且在EditText中輸入字符時動態地進行更改以刺激駱駝格式格式。

如果有人知道意味着幫助我。

謝謝。

回答

2

您可以將TextWatcher添加到EditText,並在每次通知文本時收到通知。使用它,你可以解析字符串來查找空格後的字符,並將它們更新爲大寫。

這是我做的一個快速測試,效果非常好(遠非最佳,因爲每次編輯Editable時都會再次調用監聽器...)。

editText.addTextChangedListener(new TextWatcher() { 

     @Override 
     public void onTextChanged(CharSequence s, int start, int before, int count) { 
      // TODO Auto-generated method stub 

     } 

     @Override 
     public void beforeTextChanged(CharSequence s, int start, int count, int after) { 
      // TODO Auto-generated method stub 

     } 

     @Override 
     public void afterTextChanged(Editable s) { 
      String string = s.toString(); 
      int index = -1; 
      while (((index = string.indexOf(' ', index + 1)) != -1) && (index + 1 < string.length())) { 
       // Get character 
       char c = string.charAt(index + 1); 
       if (Character.isLowerCase(c)) { 

        // Replace in editable by uppercase version 
        s.replace(index+1, index + 2, Character.toString(c).toUpperCase()); 
       } 
      } 
     } 
    }); 

爲了避免被調用到的時候,你可以做一個char[]所有的變化,只提交到Editable如果進行了更改。

一個簡單的解決方案可能是隻使用split(' ')你的字符串,由大寫版本替換String[]所有首字母(如果需要),並承諾只有一次的Editable

更簡單的優化是爲您的匿名類添加布爾值,將其設置爲當您輸入afterTextChanged時嘗試,退出時將其設置爲false,並且只在布爾值爲false時處理字符串。

0

您需要實現該領域的TextWatcher,聽的空間,一個空間後,你需要改變,如果etitText鍵升降功能的用戶輸入大寫

0

你可以做到這一點的,字符。 getText.toString.trim.length-1 ==''稍後將設置爲大寫字母。

1

我知道這是舊的,我偶然發現它尋找相同的東西,並找到了完美的方式來做到這一點,所以我以爲我會分享誰在這個線程上絆倒誰的人。其中包括當用戶改變它爲小寫他們的自我和移動 - 您可以使用android:inputType="textCapWords

<EditText 
    android:inputType="textCapWords" /> 

否則將導致EditText控制,使每一個字開始用大寫字母在佈局XML爲EditText設置繼續下一個單詞!