Unity | 判断相邻的两个字符是不是都是汉字

 

最近的文字识别项目需要获取图片中一个汉字的宽度,这样以便于对文字中的空格进行排版。当前通过OCR文字识别获取到了每个字的x、y坐标数据,那么一个字的宽度便等于后一个汉字的x减去前一个汉字的x。但问题又来了,数字123与字母abc的宽度肯定小于一个汉字的宽度,那么便需要判断相邻的两个字符是否为汉字了。

 

 public class NewBehaviourScript :  MonoBehaviour {

    private string str = "[问题12]:相邻的都是汉字吗?";
    void Start()
    {
        //IsChineseCharacterMethod1(str);
        IsChineseCharacterMethod2(str);
    }
    /// <summary>
    /// 通过ASCII码判断,汉字的ASCII码大于127
    /// </summary>
    /// <param name="str"></param>
	private void IsChineseCharacterMethod1(string str)
    {
        for (int i = 1; i < str.Length; i++)
        {
            if(str[i-1]>127&&str[i]>127)
            {
                Debug.Log("\""+str[i - 1] + "\"与\"" + str[i] + "\"相邻,都是汉字");
            }
            else
            {
                Debug.Log("\"" + str[i - 1] + "\"与\"" + str[i] + "\"相邻,但不都是汉字");
            }
        }
      
    }
    /// <summary>
    /// 通过UNICODE 编码范围判断
    /// </summary>
    /// <param name="str"></param>
    private void IsChineseCharacterMethod2(string str)
    {
        for (int i = 1; i < str.Length; i++)
        {
            if (str[i - 1] >= 0x4e00&& str[i - 1]<= 0x9fff && str[i] >=0x4e00&& str[i] <= 0x9fff)
            {
                Debug.Log("\"" + str[i - 1] + "\"与\"" + str[i] + "\"相邻,都是汉字");
            }
            else
            {
                Debug.Log("\"" + str[i - 1] + "\"与\"" + str[i] + "\"相邻,但不都是汉字");
            }
        }
    }

    // Update is called once per frame
    void Update () {
		
	}
}

 运行结果如下:

发布了162 篇原创文章 · 获赞 20 · 访问量 7万+

猜你喜欢

转载自blog.csdn.net/weixin_39766005/article/details/94023794