zoukankan      html  css  js  c++  java
  • 限制输入内容的需求

    public class InputTxtFilter{
        public static final int INPUT_TYPE_EN = 0x01;
        public static final int INPUT_TYPE_CH = 0x02;
        private static final String[] SPELL = new String[]{
            "a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z",
            "ā","á","ǎ","à","ō","ó","ǒ","ò","ē","é","ě","è","ī","í","ǐ","ì","ū","ú","ǔ","ù","ǖ","ǘ","ǚ","ǜ","ü"
        };
        private static char[] chineseParam = new char[]{'」',',','。','?','…',':','~','【','#','、','%','*','&','$','(','‘','’','“','”','『','〔','{','【'
            ,'¥','£','‖','〖','《','「','》','〗','】','}','〕','』','”',')','!',';','—'};
     
        private InputTxtFilter( ){
     
        }
     
        public static void inputFilter( final Context context, final EditText editText, final int type, final int inputLimit){
            InputFilter[] filters = new InputFilter[1];
            filters[0] = new InputFilter.LengthFilter(inputLimit){
                public CharSequence filter(CharSequence source, int start, int end, Spanned dest, int dstart, int dend){
                    boolean isRightCharater = false;
                    if(type == INPUT_TYPE_EN){
                        isRightCharater = isLetter(source.toString());
                    }else if(type == INPUT_TYPE_CH){
                        isRightCharater = isChineseWord(source.toString());
                    }
     
                    if ( !isRightCharater|| dest.toString( ).length( )>=inputLimit ){
                        return "";
                    }
     
                    return source;
                }
            };
            editText.setFilters(filters);
        }
     
        /**
         * 检测String是否全是中文
         *
         */
        public static boolean isChineseWord( String name ){
            boolean res=true;
            char[] cTemp = name.toCharArray( );
     
            for( int i = 0; i < name.length( ); i++ ){
                if( !isChinese( cTemp[ i ] ) ){
                    res=false;
                    break;
                }
            }
     
            return res;
        }
     
        /**
         * 是否为英文字母
         *
         * */
        public static boolean isLetter( String inputStr ){
            char[] inputArray = inputStr.toCharArray( );
            List<String> spellList = Arrays.asList( SPELL );
     
            for( char input : inputArray ){
                if( !spellList.contains( input + "" ) ){
                    return false;
                }
            }
     
            return true;
        }
     
        /**
         * 判定输入汉字
         * @param c
         */
        public static boolean isChinese( char c ){
            for( char param : chineseParam ){
                if( param == c ){
                    return false;
                }
            }
     
            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.GENERAL_PUNCTUATION
                || ub == Character.UnicodeBlock.CJK_SYMBOLS_AND_PUNCTUATION
                || ub == Character.UnicodeBlock.HALFWIDTH_AND_FULLWIDTH_FORMS ){
                return true;
            }
     
            return false;
        }
    }
    Axepudding Contact:axepudding@qq.com
  • 相关阅读:
    nes 红白机模拟器 第4篇 linux 手柄驱动支持
    nes 红白机模拟器 第3篇 游戏手柄测试 51 STM32
    nes 红白机模拟器 第2篇 InfoNES
    python语言输入
    python控制窗口口字形运动
    python控制窗口对角线运动
    python控制窗口移动(画圆)
    python控制窗口缩放
    python控制窗口显示隐藏
    python修改内存,(修改植物大战僵尸)
  • 原文地址:https://www.cnblogs.com/axepudding/p/5672508.html
Copyright © 2011-2022 走看看