Android EditText限制文字長度(中文算2字元,英文算1字元)
其實專案原本使用cocos2dx中的CCEditBox,使用editBox:setMaxLength(10),想要限制輸入長度,但是這裡實際使用的是如下圖:
這裡LengthFilter不會區分中英文,一律當做1個字元,而專案實際想要的是中文算2個字元,英文算做1個字元這樣處理,因此就需要修改一下這個Filter。
上個demo吧,這裡直接建立一個android的工程,在activity_main.xml中新增以下程式碼,自己去new出EditText也可以
然後在MainActivity.java中新增如下程式碼:
這裡實際上就是判斷一下,英文ascii碼值都是128以下,這裡只要通過這個區分,來做個限制即可。final int maxLen = 10; InputFilter filter = new InputFilter() { @Override public CharSequence filter(CharSequence src, int start, int end, Spanned dest, int dstart, int dend) { int dindex = 0; int count = 0; while (count <= maxLen && dindex < dest.length()) { char c = dest.charAt(dindex++); if (c < 128) { count = count + 1; } else { count = count + 2; } } if (count > maxLen) { return dest.subSequence(0, dindex - 1); } int sindex = 0; while (count <= maxLen && sindex < src.length()) { char c = src.charAt(sindex++); if (c < 128) { count = count + 1; } else { count = count + 2; } } if (count > maxLen) { sindex--; } return src.subSequence(0, sindex); } }; EditText editText=(EditText)findViewById(R.id.edit_text); editText.setFilters(new InputFilter[]{filter});
比較蛋疼的是
CharSequence filter(CharSequence src, int start, int end, Spanned dest, int dstart, int dend)
這個介面的引數,一開始混淆了好久
src是當前輸入的文字,start和end我壓根就沒用到,就是輸入字元的起始和終止長度
dest是當前已經顯示的文字,dstart和dend含義一樣,我也沒用到
在我使用的過程中,使用start/end和dstart/dend就要加強判斷sindex和dindex是否超過長度,比較麻煩,所以就直接使用src.length和dest.length了
最後返回的字串,就是會新增在當前editbox已經存在文字後面,如果不超過限制的話
相關推薦
Android EditText限制文字長度(中文算2字元,英文算1字元)
其實專案原本使用cocos2dx中的CCEditBox,使用editBox:setMaxLength(10),想要限制輸入長度,但是這裡實際使用的是如下圖: 這裡LengthFilter不會區分中英文,一律當做1個字元,而專案實際想要的是中文算2個字元,英文算做1個字元這
Android EditText限制文字長度(中文算3字元,英文算1字元)
/** * 限制輸入字元長度 中文算3字元,英文算1字元 */ InputFilter filter = new InputFilter() { final int maxLen = 21;
如何實現按位元組擷取字串(中文佔2位元組,英文佔1位元組,substring())?
str = "我a智慧abc" substring(str, 5) 會擷取成為 “我a智慧a” 現在要實現中文佔2位元組,英文佔1位元組,按位元組擷取 ,輸出應該為"我a智" public class SubString{ /** * */ public
Android菜鳥學習筆記(WebView載入html頁面,頁面提交資料問題)
在開發過程中,有一個問卷調查功能,問卷是url用webView載入html頁面出來,在html頁面提交時發現session沒和webview的同步導致提交失敗,這個問題困擾了我很久,後來在前輩的共同研究下,終於找到辦法:獲取html頁面提交的url,然後對url做一次coo
Spring Boot Admin 詳解(Spring Boot 2.0,基於 Eureka 的實現)
Spring Boot Admin 用於監控基於 Spring Boot 的應用,它是在 Spring Boot Actuator 的基礎上提供簡潔的視覺化 WEB UI。 (一)簡介 Spring Boot Admin 提供了很多功能,如顯示 name、id 和 version,顯示線上狀態,
Android EditText字數限制:中文算2個字元,英文數字算1個字元,超出後彈Toast
最近有這個需求,在編輯框中輸入字元,有長度的限制,中文算2個字元,英文算1個字元 1、中文、英文、數字都算一個字元: /** * @author pengbo * @date 2018/11/12 * 漢字、英文、數字都算一位,超出位數彈吐司 */ public class Max
android 字元長度限制,中文2個字元 ,英文1個字元
比如最大10個字元,若超過10個,則顯示9或者8個字元加省略號. 啊啊啊啊啊 哎哎哎啊... 哎哎哎啊a... aaaaaaaa... public class CalTextLength { public static String handleText(String
Android EditText 限制輸入為ip類型
text ins TE sta digits listen andro color num editText.setInputType(InputType.TYPE_CLASS_NUMBER); String digits = "01234
限制input輸入字元數(中文2個字元,英文1個字元)
input的maxlength可以限制input的輸入的字元數,但是是字串的長度,相當於判斷str.length;然而經常會有中文字元算2個字元英文算1個字元的需求,目前只能通過編寫程式碼來實現。 <input class="remark-modify" maxlength="32" type=
Android EditText限制小數點輸入兩位
限制輸入小數點兩位 需要對輸入框設定鍵盤型別 inputType:number_decimal bank_card_pay_balance.addTextChangedListener(new TextWatcher() { boolean deleteLastChar;//是否需要刪
Java-基於百度API的圖片文字識別(支援中文,英文和中英文混合)
PS: 基於Java 1.8 版本控制:maven 使用之前需要獲取對應的專案API_KEY,SECRET_KEY,這些引數在使用API的時候必須用到,
Java-基於百度API的圖片文字識別(支援中文,英文和中英文混合)貨運APP開發找上海捌躍網路科技有限公司
PS: 基於Java 1.8 版本控制:maven 使用之前需要獲取對應的專案API_KEY,SECRET_KEY,這些引數在使用API的時候必須用到,用於生成access_token。 如何獲取這些引數:在百度開發者中心申請一個“通用文字識別”專案,然後就可
用python3 SVM訓練測試預測文字摘要(中文)(分句,分詞,詞典,詞袋,測試建模,預測)
使用SVM 訓練和預測,需要正確的資料: X:儲存特徵。可以是二維矩陣,如:[ [c1 ,c2, c3…] ,[…],…];也可以是這樣的形式[{a1:c1,a2:c2,a3:c3…},{…} …],c1,c2…表示特徵值a1,a2,a3…表示詞位置(詞在le
Android EditText限制輸入字元的5種實現方式
最近專案要求限制密碼輸入的字元型別, 例如不能輸入中文。 現在總結一下EditText的各種實現方式, 以比較各種方法的優劣。 第一種方式: 設定EditText的inputType屬性,可以通過xml或者java檔案來設定。假如我要設定為顯示
Android EditText 限制輸入的字數
共有兩種方法,第一種是在xml中直接設定,第二種是在程式碼中設定。 ** 在xml中設定 ** android:maxLength=”10” 代表限制輸入的字數最大為10 <Edi
Android EditText 限制輸入數字和字母設定
在xml:EditText 設定屬性----android:digis="ABCDE555555&&&&&"ABCDE555555&&&&&"是你的限制規則。例如:android:digits="
QTextEdit限制文字長度
QString textContent = this->toPlainText(); int length = textContent.count(); int maxLength = maxLen; // 最大字元數 if(length
java中判斷字串真實長度(中文2個字元,英文1個字元)的方法
public class Char_cn { public static void main(String[] args) { // TODO Auto-generated method stub String haha = "呵呵呵呵abcd";
JavaScript取得字串的長度(中文,日文)
JavaScript取得字串的長度,完美識別中文,日文。 (charCode >= 0 && charCode <= 128):中文; (charCode >= 65377 && charCode <=
集成Android免費語音合成功能(在線、離線、離在線融合)
com nvi sid 審核 contacts lai 音量 ant demo 集成Android免費語音合成功能(在線、離線、離在線融合),有這一篇文章就夠了(離線)集成Android免費語音合成功能(在線、離線、離在線融合),有這一篇文章就夠了(離在線融合) 轉