android 限制editText输入长度(中英)_android edittext 限制输入字符长度 英文_臭宝guai的博客-程序员秘密

技术标签: android  长度限制  edittext  

使用以下方法,

private class NameLengthFilter implements InputFilter {
        int MAX_EN;
        String regEx = "[\\u4e00-\\u9fa5]";


        public NameLengthFilter(int mAX_EN) {
            super();
            MAX_EN = mAX_EN;
        }


        @Override
        public CharSequence filter(CharSequence source, int start, int end,
                                   Spanned dest, int dstart, int dend) {
            int destCount = dest.toString().length()
                    + getChineseCount(dest.toString());
            int sourceCount = source.toString().length()
                    + getChineseCount(source.toString());
            if (destCount + sourceCount > MAX_EN) {
                int surplusCount = MAX_EN - destCount;
                String result = "";
                int index = 0;
                while (surplusCount > 0) {
                    char c = source.charAt(index);
                    if (isChinest(c + "")) {
                        if (sourceCount >= 2) {
                            result += c;
                        }
                        surplusCount = surplusCount - 2;
                    } else {
                        result += c;
                        surplusCount = surplusCount - 1;
                    }
                    index++;
                }
                return result;
            } else {
                return source;
            }
        }


        private int getChineseCount(String str) {
            int count = 0;
            Pattern p = Pattern.compile(regEx);
            Matcher m = p.matcher(str);
            while (m.find()) {
                for (int i = 0; i <= m.groupCount(); i++) {
                    count = count + 1;
                }
            }
            return count;
        }


        private boolean isChinest(String source) {
            return Pattern.matches(regEx, source);
        }
    }



并在edittext的对象添加

editText.setFilters(new InputFilter[]{
  new NameLengthFilter(10)});

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/choubaoguai/article/details/72406294

智能推荐

Python--super、多继承、mro(实质为c3)算法_Mr.梦的博客-程序员秘密

super、多继承、mro(实质为c3)算法mro即 method resolution order (方法解释顺序)在新生类中多重继承使用新算法C3mro即 method resolution order (方法解释顺序),主要用于在多继承时判断属性的路径(来自于哪个类)。(实质上是C3算法)在新生类中有一个方法为 类名.mro() 用来查看类多继承时查找的顺序在python2版本中...

ISIS路由器的三种类型_杨玉庭.的博客-程序员秘密

ISIS路由器的三种类型1、Level-1路由器:(只能创建Level-1的LSDB)区域内的①、Level-1只能与同一区域的 Level-1 和 Level-1-2 路由器形成邻居关系②、只负责维护Level-1的LSDB,该LSDB包含本区域内的路由信息到本区域外的报文转发给最近得 Level-1-2 路由器③、Level-1 路由器只能和 Level-1 路由器建立邻接关系④、...

npm i 错误 npm ERR! code EUNSUPPORTEDPROTOCOL npm ERR! Unsupported URL Type “workspace:“: workspace_"npm err! code eunsupportedprotocol npm err! unsup_一码哥的博客-程序员秘密

npm ERR! code EUNSUPPORTEDPROTOCOLnpm ERR! Unsupported URL Type "workspace:": workspace:^7.12.1经过排查,因为我用的是私服的npm,删除一个重复的包即可我上传时穿了个错误的npm包

随便推点

论文笔记:Diffusion-Convolutional Neural Networks (传播-卷积神经网络)_a1424262219的博客-程序员秘密

Diffusion-Convolutional Neural Networks (传播-卷积神经网络)2018-04-0921:59:021. Abstract:  我们提出传播-卷积神经网络(DCNNs),一种处理 graph-structured data 的新模型。随着 DCNNs 的介绍,我们展示如何从 graph structured data 中学习基...

django + OSQA,十分钟内搞定一个问答网站_weixin_34208185的博客-程序员秘密

为什么80%的码农都做不了架构师?&gt;&gt;&gt; ...

gorm 如何实现支持任意原生SQL查询_gorm 原生查询_MClink的博客-程序员秘密

目标:实现一个通用查询。传入任意的原生SQL,使其能基于 gorm 上获取结果一、gorm 能否直接实现?首先,我们分析一下,首先要支持任意原生SQL,然后返回结果无法确定结构体。很多人说,gorm 本身支持原生SQL查询啊。是的没错,但是实现上却有一定的限制,通过阅读文档,发现以下两种查询方式:// 第一种type Result struct { ID int Name string Age int}var result Resultdb.Raw("SELECT i.

深度学习 | 训练网络trick——label smoothing(附代码)_yuanCruise的博客-程序员秘密

1.背景介绍:在多分类训练任务中,输入图片经过神级网络的计算,会得到当前输入图片对应于各个类别的置信度分数,这些分数会被softmax进行归一化处理,最终得到当前输入图片属于每个类别的概率。之后在使用交叉熵函数来计算损失值:最终在训练网络时,最小化预测概率和标签真实概率的交叉熵,从而得到最优的预测概率分布。在此过程中,为了达到最好的拟合效果,最优的预测概率分布为:也就是说,网络...

类似微信5.x朋友圈的弹出框点赞功能PopupWindow_Kriss ❀的博客-程序员秘密

实现对一个主题评论并显示评论列表,首先想到的是需要使用ListView控件,下面是layout下的xml布局文件:view sourceprint?001.<?xml version="1.0" encoding="utf-8"?>002.<RelativeLayout xmlns:android="http://schemas.androi

监控流媒体服务器连接监控摄像头的配置方式 - GB28181和ONVIF_onvif和gb28181区别_语言专家的博客-程序员秘密

我们在前面已经讨论过监控摄像头接入监控流媒体服务器的两种方式:onvif和gb28181,并初步探讨了两种方式的区别和各自优势。接下来我们详细介绍云视睿博流媒体服务器对两种接入方式的配置方法。一、GB28181协议接入使用GB28181协议接入流媒体服务器,监控摄像头不需要有外网ip,只要摄像头能连接到流媒体服务器即可,是摄像头主动寻找流媒体服务器,这种方式适合将监控视频远程传输到云端的服务器上,实现远程控制和调取视频。流媒体端配置进入NTV Media Server G3后台管理界面,点击

推荐文章

热门文章

相关标签