Unity之输入框屏蔽Emoji表情

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/Csoap2/article/details/98875645

记录一下同学踩到的坑在这里插入图片描述

using System.Collections;
using System.Collections.Generic;
using System.Globalization;
using System.Text.RegularExpressions;
using UnityEngine;
using UnityEngine.UI;

public class InputDelEmoji: MonoBehaviour
{
	List<string> patterns = new List<string>();

	public InputField input;
	public Text tex;
	public Text tex1;

	public string lastStr;

	void Awake()
	{
		patterns.Add(@"\p{Cs}");
		patterns.Add(@"[\u2702-\u27B0]");

		input.onValidateInput = MyOnValidateInput;

		input.onEndEdit.AddListener((arg0 =>
			{
				tex.text = arg0;
			}));

		input.onValueChanged.AddListener((arg0 =>
			{
				tex1.text = arg0;
			}));
	}


	private char MyOnValidateInput(string text, int charIndex, char addedChar)
	{
		if (patterns.Count > 0)
		{
			string s = string.Format("{0}", addedChar);
			if (BEmoji(s))
			{
				return '\0';
			}
		}
		return addedChar;
	}

	private bool BEmoji(string s)
	{
		bool bEmoji = false;
		for (int i = 0; i < patterns.Count; ++i)
		{
			bEmoji = Regex.IsMatch(s, patterns[i]);
			if (bEmoji)
			{
				break;
			}
		}
		return bEmoji;
	}

	public void AddPatterns(string s)
	{
		patterns.Add(s);
	}

	public void ClearPatterns(string s)
	{
		patterns.Clear();
	}
}

猜你喜欢

转载自blog.csdn.net/Csoap2/article/details/98875645