之前因为要在游戏项目中添加IM系统,当需要有字符限制的时候。(在客户端判断长度)
第一时间想要运用NGUI的Input中Character Limit组件,但是发现它判断的字符长度并没有全角半角之分。
后来运用System.Text.Encoding.BigEndianUnicode等方法来判断时发现Unity在不同平台所判断出的字符长度并不相同。
然后想到了运用一下这种方法来判断字符长度
/// <summary>
/// 判断字符长度
/// </summary>
/// <param name="mString"></param>
/// <returns></returns>
public int CalculatePlaces(string mString)
{
int _placesNum = 0; //统计字节位数
char[] _charArray = mString.ToCharArray();
for (int i = 0; i < _charArray.Length; i++)
{
char _eachChar = _charArray[i];
if (_eachChar >= 0x4e00 && _eachChar <= 0x9fa5) //判断中文字符
_placesNum += 2;
else if (_eachChar >= 0x0000 && _eachChar <= 0x00ff) //已2个字节判