Unity之TMP_InputField-输入字符数限制
文章目录
- 前言
- 思路
- 代码
- 工程项目
前言
我们在开发过程中遇到需要使用输入框的情况,输入框要做字符数限制,很便捷的InputField检视面板会有公开的字符数限制调节。但是你会发现,无论是英文字符还是中文字符,它都是一视同仁的,这就很难受了,因为从展示上,中英文的位宽是不一样的,我们需要英文字符数显示的多一些,中文字符数少一些。下面就来解决这个问题。
思路
我们知道英文字符在UTF-8的模式下只占1个字符,中文占2-5个字符,还有其它各类字符,我们这里主要考虑中英文, 通常来讲,我们可以限制一下输入内容的总字符数,比如限制为12个,将输入的内容进行UTF-8的转换,“aaa哈哈哈” ,总字符数为12个,哈 占3个。不过这样还有点问题,12个字符,中文只能输入4个。
abcdabcdabcd 12个字符
你好呀哈 12个字符
你好呀哈你好
很明显这样展示出来也不合理,所以我们需要把中文:英文的字数按1:2进行限制。
代码
using TMPro;
using UnityEngine;
using UnityEngine.UI;
/// <summary>
/// 中文字符数转变为2
/// </summary>
[RequireComponent(typeof(TMP_InputField))]
public class CharNumTransf : MonoBehaviour
{private TMP_InputField inputField;[Header("最大字数")]//英文算1个,中文算2个public int MaxLimit = 16;private void Awake(){InputFieldif (inputField == null){inputField = GetComponent<TMP_InputField>();}}void Start(){inputField.onValidateInput = _OnValidateInput;}char _OnValidateInput(string text, int charIndex, char addedChar){if (GetTransCharNum(text) + GetTransCharNum(addedChar.ToString()) > MaxLimit){return '\0'; //返回空}return addedChar;}/// <summary>/// 字符串统计/// </summary>/// <param name="text"></param>/// <returns></returns>int GetTransCharNum(string text){int totalNum = 0;char[] alrText = text.ToCharArray();foreach (var item in alrText){totalNum += SingleCharTrans(item);}return totalNum;}/// <summary>/// 单个字符判断/// </summary>/// <param name="singChar"></param>/// <returns></returns>int SingleCharTrans(char singChar){int leng = System.Text.Encoding.UTF8.GetBytes(singChar.ToString()).Length;if (leng >= 2){leng = 2;}return leng;}
}
工程项目
链接:https://pan.baidu.com/s/1Rar1pSsgwK_aCh2SuHqVrQ
提取码:t8wq
Unity之TMP_InputField-输入字符数限制相关推荐
- iOS计算输入字符数
2019独角兽企业重金招聘Python工程师标准>>> iOS计算输入字符数 本文展示在iOS下,如何正确的计算输入的字符个数. 常见编码 汉字.中文符号 UTF-8编码下,一个汉字 ...
- 【转】android 中如何限制 EditText 最大输入字符数
原文网址:http://blog.csdn.net/fulinwsuafcie/article/details/7437768 方法一: 在 xml 文件中设置文本编辑框属性作字符数限制 如:andr ...
- android edittext最多输入,android 中如何限制 EditText 最大输入字符数
方法一: 在 xml 文件中设置文本编辑框属性作字符数限制 如:android:maxLength="10" 即限制最大输入字符个数为10 方法二: 在代码中使用InputFilt ...
- android 输入框 实时计算剩余的输入字符数(addTextChangedListener)
照例先上传效果图: 1 布局文件很简单 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/andro ...
- android 中如何限制 EditText 最大输入字符数
方法一: 在 xml 文件中设置文本编辑框属性作字符数限制 如:android:maxLength="10" 即限制最大输入字符个数为10 方法二: 在代码中使用InputFilt ...
- 限制input输入字符数(中文2个字符,英文1个字符)
input的maxlength可以限制input的输入的字符数,但是是字符串的长度,相当于判断str.length;然而经常会有中文字符算2个字符英文算1个字符的需求,目前只能通过编写代码来实现. & ...
- android 限制edittext 最大输入字符数
最大字符数: private final int INT_MAX_NUM = 256; private class EditChangeLisener implements TextWatcher { ...
- QTextEdit设置最大可输入字符
QTextEdit是没有可以直接调用的成员函数用来设置可输入字节数的最大限制. 这边是通过信号textChanged来实时监控输入,从而控制输入的. 实现方式如下: 1.定义自己的处理槽slotTex ...
- 限制textarea文本域中输入字符个数(防粘贴)
通常我们需要对用户文本输入进行字符数量上的限制,对于<input type="text" value="" />文本输入域,我们可以通过maxlen ...
最新文章
- 记录win10快捷键
- Hinton口中破解宇宙终极秘密的GPT-3厉害在哪?这有篇涂鸦详解
- delphi 实现屏幕旋转代码_X86指令混淆之函数分析和代码块粉碎
- 总结1:Ajax上传图片至阿里云服务器
- linux 进程通信机制,linux的进程通信机制小结
- excel字符串反转
- 树莓派安装python3.5_树莓派 | 04 安装基于python3.5的tensorflow,解决python版本不匹配问题...
- 微服务怎么部署到服务器的_微服务的部署与发布:持续交付与持续部署微服务...
- jadc连接oracle,用jdbc连接oracle的第一次经历
- QQ 5.0的一些特效学习 一
- java根据xsd验证json文件_JSON解析器之json schema校验及代码实现
- 微信小游戏上线发布全流程详解
- Node.js 整合 Express 框架实现微信支付和支付宝支付
- 张小龙是高球冠军,大前研一是物理学家:​为什么牛人在很多领域都是世界第一?...
- Android离线输入法,QQ输入法Android版4.9离线语音输入让沟通无障碍
- IOS设备与Windows面对面互传文件
- 百度地图marker标注上如何加上数字
- 超体素分割——分割块点云单独保存及遗漏点的处理
- springmvc临时不使用视图解析器的自动添加前后缀
- LeetCode 908 题解
热门文章
- 三井化学将扩大LUCANT™产能
- linux 文件大小写敏感,大小写敏感的问题
- 这一天,我拿到了华为“天道酬勤”奖,这是我到海外的第十年
- python2exe_Python 使用Py2exe进行bin化
- python求和函数1-n_python 用for循环实现1~n求和的实例
- 心拔凉拔凉五连追问No.58
- MTD,文件系统,存储器分区的个人理解
- Android基础入门教程——10.1 TelephonyManager(电话管理器)
- 计算机调出任务管理器的组合键是,调出任务管理器快捷键
- Splunk 常见问题解答