1. 程式人生 > >需求:EditText限制 輸入20個字母。10個漢字

需求:EditText限制 輸入20個字母。10個漢字

  afterTextChanged方法。

private final int MAX_CHAR_NUM = 20;

   mSearchEditText.addTextChangedListener(new SimpleTextWatcher() {
            @Override
            public void afterTextChanged(Editable s) {

                int charSequenceCount = countChineseChar(s);

                if (s.length() + charSequenceCount > MAX_CHAR_NUM) {
                    mSearchEditText.setText(s.subSequence(0, s.length() - 1));
                    return;
                }
        });

//計算中文字元

 /**
     * 計算中文字元
     *
     * @param sequence
     * @return
     */
    private int countChineseChar(CharSequence sequence) {

        if (TextUtils.isEmpty(sequence)) {
            return 0;
        }
        int charNum = 0;
        for (int i = 0; i < sequence.length(); i++) {
            char word = sequence.charAt(i);
            if (StringUtils.isChineseChar(word)) {//中文
                charNum++;
            }
        }
        return charNum;
    }

/**

     * 判斷是否是中文
     * @param c
     * @return
     */
    public static boolean isChineseChar(char c) {
        Character.UnicodeBlock ub = Character.UnicodeBlock.of(c);
        if (ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS
                || ub == Character.UnicodeBlock.CJK_COMPATIBILITY_IDEOGRAPHS
                || ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_A
                || ub == Character.UnicodeBlock.CJK_UNIFIED_IDEOGRAPHS_EXTENSION_B
                || ub == Character.UnicodeBlock.CJK_SYMBOLS_AND_PUNCTUATION
                || ub == Character.UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS
                || ub == Character.UnicodeBlock.GENERAL_PUNCTUATION) {
            return true;
        }
        return false;
    }

相關推薦

需求EditText限制 輸入20字母10漢字

  afterTextChanged方法。 private final int MAX_CHAR_NUM = 20;    mSearchEditText.addTextChangedListener(new SimpleTextWatcher() {         

Android EditText 限制輸入數字和字母設定

在xml:EditText 設定屬性----android:digis="ABCDE555555&&&&&"ABCDE555555&&&&&"是你的限制規則。例如:android:digits="

EditText 限制輸入為中文,個數為6

et_real_name.setFilters(new InputFilter[]{new InputChineseFilter(6)});
 class InputChineseFilter implements InputFilter { private final

限制EditText輸入數字和字母

可以通過設定EditText屬性digits android:digits="1234567890qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVB

正則驗證 只能輸入中文、數字、字母 2-10字符之間

正則驗證 只能輸入中文、數字、字母 2-10個字符之間var reg = /([u4e00-u9fa5\dA-Za-z]){2,10}/; //這個表達式有一些特殊字符 比如@ 是可以驗證通過的實際操作後發現下面正則表達式普通字母、數字已經隱含了不包括特殊符號所以下面包含普通字母、數字的正則表達是

Android EditText 限制輸入為ip類型

text ins TE sta digits listen andro color num editText.setInputType(InputType.TYPE_CLASS_NUMBER); String digits = "01234

輸入星期幾的第一字母來判斷一下是星期幾,如果第一字母一樣,則繼續判斷第二字母

int code 輸入 stat == print put name pri def juge(num,week_list): w = input(‘請輸入第%s個字母:‘%num) w = w.lower() res = [] state

EditText限制輸入換行

/** * 限制回車換行 * * @param et 輸入框 */ public static void LimitsEditEnter(EditText et) { et.setOnEditorActionListener(new OnEditorActionLis

edittext限制輸入小數點後一位

.addTextChangedListener(new TextWatcher() { @Override public void beforeTextChanged(CharSequence charSequence, int i, int i1, int

EditText限制輸入字元型別

最近有一個EditText內只能輸入數字,字母,漢字的字元型別限制,隨手整理一下,有新的內容以後在做修改 fun stringFilter(str: String): String { val regEx = "[^a-zA-Z0-9\u4E00-\u9

Android EditText限制輸入字元的5種實現方式

         最近專案要求限制密碼輸入的字元型別, 例如不能輸入中文。   現在總結一下EditText的各種實現方式,  以比較各種方法的優劣。  第一種方式:  設定EditText的inputType屬性,可以通過xml或者java檔案來設定。假如我要設定為顯示

Android EditText 限制輸入的字數

共有兩種方法,第一種是在xml中直接設定,第二種是在程式碼中設定。 ** 在xml中設定 ** android:maxLength=”10” 代表限制輸入的字數最大為10 <Edi

練習輸入一個小寫字母輸入一個大寫字母

#include <stdio.h>int main(void){ char a;  char red; printf("請輸入一個小寫字母:");  scanf("%c",&a); red = a - 32; printf("%c的大寫字母是:%c",a,red);

(轉)EditText限制輸入字元型別的幾種方式

轉載自: 1、第一種方式是通過EditText的inputType來實現,可以通過xml或者Java檔案來設定。假如我要設定為顯示密碼的形式,可以像下面這樣設定: 在xml中,   Android:inputType="textPassword" 在java檔案中,

Edittext限制輸入漢字50英文100

【android:maxLength="50"  限制漢字50個】 AddLengthFilter.lengthFilter(this, et_explain, 100, "超出範圍"); /**  * 長度監聽過濾  *   * @version v1.0  * Edi

EditText限制輸入的字元數並彈出Toast提示字數已達上限

大家對EditText這個控制元件並不陌生,它是一個可供我們輸入文字內容的輸入框。前些日子需要實現這樣一個需求:限制EditText中可以輸入的最大字元數為6,達到6時,使用者每按一次軟鍵盤就彈出一個Toast提示使用者,並且無法再輸入內容。就像下圖的效果:

android程式碼設定EditText輸入數字、字母

 如何設定EditText,使得只能輸入數字或者某些字母呢? 一、設定EditText,只輸入數字: 方法1:直接生成DigitsKeyListener物件就可以了。 et_1.setKeyListener(new DigitsKeyListener(false,tru

EditText限制輸入型別為英數字並限制長度

方法一: EditText標籤下增加以下屬性: android:maxLength="18" android:digits="1234567890qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM" 方法二: 通過T

EditText限制輸入內容為1-100範圍內的數字

首先在佈局檔案中,設定inputType為number,且maxLength=3;然後設定監聽輸入,程式碼如下 public TextWatcher inputWatch(final EditText input) { return new