文章目录

  • 前言
  • 思路
  • 代码
  • 工程项目

前言

我们在开发过程中遇到需要使用输入框的情况,输入框要做字符数限制,很便捷的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-输入字符数限制相关推荐

  1. iOS计算输入字符数

    2019独角兽企业重金招聘Python工程师标准>>> iOS计算输入字符数 本文展示在iOS下,如何正确的计算输入的字符个数. 常见编码 汉字.中文符号 UTF-8编码下,一个汉字 ...

  2. 【转】android 中如何限制 EditText 最大输入字符数

    原文网址:http://blog.csdn.net/fulinwsuafcie/article/details/7437768 方法一: 在 xml 文件中设置文本编辑框属性作字符数限制 如:andr ...

  3. android edittext最多输入,android 中如何限制 EditText 最大输入字符数

    方法一: 在 xml 文件中设置文本编辑框属性作字符数限制 如:android:maxLength="10" 即限制最大输入字符个数为10 方法二: 在代码中使用InputFilt ...

  4. android 输入框 实时计算剩余的输入字符数(addTextChangedListener)

    照例先上传效果图: 1  布局文件很简单 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/andro ...

  5. android 中如何限制 EditText 最大输入字符数

    方法一: 在 xml 文件中设置文本编辑框属性作字符数限制 如:android:maxLength="10" 即限制最大输入字符个数为10 方法二: 在代码中使用InputFilt ...

  6. 限制input输入字符数(中文2个字符,英文1个字符)

    input的maxlength可以限制input的输入的字符数,但是是字符串的长度,相当于判断str.length;然而经常会有中文字符算2个字符英文算1个字符的需求,目前只能通过编写代码来实现. & ...

  7. android 限制edittext 最大输入字符数

    最大字符数: private final int INT_MAX_NUM = 256; private class EditChangeLisener implements TextWatcher { ...

  8. QTextEdit设置最大可输入字符

    QTextEdit是没有可以直接调用的成员函数用来设置可输入字节数的最大限制. 这边是通过信号textChanged来实时监控输入,从而控制输入的. 实现方式如下: 1.定义自己的处理槽slotTex ...

  9. 限制textarea文本域中输入字符个数(防粘贴)

    通常我们需要对用户文本输入进行字符数量上的限制,对于<input type="text" value="" />文本输入域,我们可以通过maxlen ...

最新文章

  1. 记录win10快捷键
  2. Hinton口中破解宇宙终极秘密的GPT-3厉害在哪?这有篇涂鸦详解
  3. delphi 实现屏幕旋转代码_X86指令混淆之函数分析和代码块粉碎
  4. 总结1:Ajax上传图片至阿里云服务器
  5. linux 进程通信机制,linux的进程通信机制小结
  6. excel字符串反转
  7. 树莓派安装python3.5_树莓派 | 04 安装基于python3.5的tensorflow,解决python版本不匹配问题...
  8. 微服务怎么部署到服务器的_微服务的部署与发布:持续交付与持续部署微服务...
  9. jadc连接oracle,用jdbc连接oracle的第一次经历
  10. QQ 5.0的一些特效学习 一
  11. java根据xsd验证json文件_JSON解析器之json schema校验及代码实现
  12. 微信小游戏上线发布全流程详解
  13. Node.js 整合 Express 框架实现微信支付和支付宝支付
  14. 张小龙是高球冠军,大前研一是物理学家:​为什么牛人在很多领域都是世界第一?...
  15. Android离线输入法,QQ输入法Android版4.9离线语音输入让沟通无障碍
  16. IOS设备与Windows面对面互传文件
  17. 百度地图marker标注上如何加上数字
  18. 超体素分割——分割块点云单独保存及遗漏点的处理
  19. springmvc临时不使用视图解析器的自动添加前后缀
  20. LeetCode 908 题解

热门文章

  1. 三井化学将扩大LUCANT™产能
  2. linux 文件大小写敏感,大小写敏感的问题
  3. 这一天,我拿到了华为“天道酬勤”奖,这是我到海外的第十年
  4. python2exe_Python 使用Py2exe进行bin化
  5. python求和函数1-n_python 用for循环实现1~n求和的实例
  6. 心拔凉拔凉五连追问No.58
  7. MTD,文件系统,存储器分区的个人理解
  8. Android基础入门教程——10.1 TelephonyManager(电话管理器)
  9. 计算机调出任务管理器的组合键是,调出任务管理器快捷键
  10. Splunk 常见问题解答