UGUI_输入框Inputfield中英文字符限制,选中替换
直接在面板上设置存在的问题:
1.协同开发时不便于他人配置修改
2.中英文输入字符数相同(eg:6字符限制:abcdef 或 一二三四五六),字符 统计不区分中英文,有时不符合设计需求 -.-
思路
1.现以中英文为例,英文字符在UTF-8的模式下只占1个字符,中文占2-5个字符,如果仅仅进行UTF-8的转换,中文字符占位会有问题。
abcdabcdabcd 12个字符你好呀哈 12个字符你好呀哈你好
so,需要加个判断,把中文:英文的字数按1:2进行限制
int SingleCharTrans(char singChar){int leng = System.Text.Encoding.UTF8.GetBytes(singChar.ToString()).Length;if (leng >= 2){leng = 2;}return leng;}
2.使用inputfield.onValidateInput
,自定义每次输入时的回调函数,在输入框中的每次输入都进行判断,中文+英文的字符数超上限了就停止键入,返回'\0'
3.But,这样做,存在一个细节问题,假如现在输入框内的字符已经输入达上限了,我选中其中的一部分字符进行替换输入(类似重命名的操作时默认全选旧名字),是不能进行输入的,这样显然也不合理。因此还需要再增加选中内容重新输入这样的逻辑
实现方法:使用选中标记的前后位置判断,前后标记不同,则选中了内容,此时应该解除输入限制
第2,3步代码为:
inputfield = xxx.GetComponent<InputField>();inputfield.onValidateInput += OnDataInput;char OnDataInput(string text, int charIndex, char addedChar){if (inputfield.selectionAnchorPosition > inputfield.selectionFocusPosition){return addedChar;}if (GetTransCharNum(text) + GetTransCharNum(addedChar.ToString()) > m_maxLimit){return '\0'; //返回空}return addedChar;}int GetTransCharNum(string text){int totalNum = 0;char[] alrText = text.ToCharArray();foreach (var item in alrText){totalNum += SingleCharTrans(item);}return totalNum;}
把上面代码放在一起,根据自己项目调试下就可以使用了。
参考链接:Unity之TMP_InputField-输入字符数限制_彩色墨水的博客-CSDN博客
UGUI_输入框Inputfield中英文字符限制,选中替换相关推荐
- [错误]input输入框只能输入或者选中替换输入,不能删除内容
** [错误]input输入框只能输入或者选中替换输入,不能删除内容 ** 本人的解决方法 类型添加或改成 type="text"
- 区分中英文字符的两种方法: 正则和charCodeAt()方法
最近在为项目写登录注册系列页面, 表单验证无疑是不可缺少的部分, 在这个jQ插件满天飞的web年代, 表单验证倒也不是难事. 但再好的插件, 也并不能做到十全十美, 比如这次用到的我先前介绍过的Van ...
- 自定义方法中英文字符截取
//方法一:(借鉴于thinkphp中的中英文字符截取) function msubstr($str, $start=0, $length, $charset="utf-8", $ ...
- 【opencv】opencv在图片、视频嵌中英文字符的方法
说明:本博文是根据前人已有的成果并结合自己的理解而成的.为了避免让读者感到繁琐,我将运用小学及初中学习的总分总.承上启下的写作技巧进行讲解,力图做到详略有致,言简意赅,图文并茂,通俗易懂. 实验平台: ...
- 输入单个空格字符_字符美化丶替换丶转换
清除字符格式函数CLEAN函数 CLEAN函数的作用是清除打印机不能打印的字符 TRIM函数 TRIM函数的作用是清除字符前后的空格 不清除中间的单个空格 中间两个空格清除只剩一个 替换字符函数SUB ...
- 中文空格字符与英文空格字符怎么区分_设计随笔 | 中英文字符间距与社交网络脱退...
前阵子群里的一些同学有注意到,在 iOS 13 系统里,排版引擎会自动在中文汉字与数字或英文字母之间加上一个小于半角空格的空白间距. 在这之前,有很多人在讨论关于中文汉字与英文字母之间是否应该手动添加 ...
- python中英文字符怎么区分-python 利用utf-8编码判断中英文字符的简单示例
这篇文章主要为大家详细介绍了python 利用utf-8编码判断中英文字符的简单示例,具有一定的参考价值,可以用来参考一下. 感兴趣python 利用utf-8编码判断中英文字符的简单示例的小伙伴,下 ...
- JS区分中英文字符的两种方法
JS区分中英文字符的两种方法: 正则和charCodeAt()方法. 正则无疑是最强大的判断各种条件的方法, 最近也在研习它, 虽然枯燥, 但仍有乐趣. 用它来判断一个双字节的中文字符也是轻而易举地. ...
- char数组存储中英文字符
我们常常碰到中英文字符混合的情况.英文字符占一个字符,中文字符占两个字符(一个字符是肯定存不下的). 当我们要对字符串中的某些中文或者英文做一些处理的时候. 我们就要去判断它们是中文字符还是英文字符之 ...
最新文章
- iOS UICollectionView实现瀑布流(3)
- 入门指引 - PHP手册笔记
- Numpy-矩阵的运算
- pythonfor循环加2_初中生教你编程---python(for循环)part 2
- 当 AI 遇见经典,科大讯飞发布两款智能笔记本新品!
- php 加载库文件_php 如何调用dll文件内接口,求大神帮忙谢谢。
- web自动化测试 Selenium2 Java自动化测试实战9_3
- 网易云音乐转码MP3
- 判断图有无环_汽车 AEB 驾驶员在环系统建立
- 樊登读书搞定读后感_《读懂一本书:樊登读书法》读后感10篇
- 英语论文写作笔记一则
- SQL SERVER SA密码忘记,windows集成身份验证都登录不了不怎么办
- mysql表数据量超过百万条了,count很慢。。
- 参加百度深度学习培训总结
- mysql导入数据库之后触发器没有权限_MYSQL设置触发器权限问题的解决方法
- 程序设计阶段性总结报告二
- STM8 fHSI和 fCPU分频
- Xcode全局搜索搜不到部分内容解决
- 经典语录-每日积累-05
- 使用Arduino和Node.js控制摩托车