天津23维预案
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 
 
 

97 lines
3.0 KiB

using System.Collections;
using System.Collections.Generic;
using UnityEngine;
//Author:YHD
public class ValidCharDetect {
void Start()
{
//if (this.Button == null)
//{
// this.Button = this.GetComponentInChildren<UI_ButtonClick>();
//}
//if (this.InputText == null)
//{
// this.InputText = this.GetComponentInChildren<InputField>();
//}
//this.Button.OnClickEvent += Button_OnClickEvent;
//this.InputText.onValidateInput = _OnValidateInput;
//this.InputText.onEndEdit.AddListener(input_OnEndEdit);
}
public static char _OnValidateInput(string text, int charIndex, char addedChar)
{
if (!_isValidChar(addedChar)) return '\0';//返回空
return addedChar;
}
//非法字符列表
private static bool _isValidChar(char addedChar)
{
//char[] invalid1 =System.IO.Path.GetInvalidFileNameChars();
//for (int i = 0; i < invalid1.Length; i++) {
// if (invalid1[i] == addedChar) {
// return false;
// }
//}
//char[] invalid2=System.IO.Path.GetInvalidPathChars();
//for (int i = 0; i < invalid2.Length; i++) {
// if (invalid2[i] == addedChar) {
// return false;
// }
//}
for (int i = 0; i < InvalidFilePathNameChars.Length; i++)
{
if (((int)addedChar) == (int)InvalidFilePathNameChars[i])
{
return false;
}
}
for (int i = 0; i < InvalidCustomChars.Length; i++)
{
if (addedChar == InvalidCustomChars[i])
{
return false;
}
}
return true;
}
/// <summary>
/// 非法文件名路径 字符char值
/// GetInvalidFileNameChars(),GetInvalidPathChars()
/// </summary>
private static readonly byte[] InvalidFilePathNameChars = new byte[]{
34,60,62,124,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,
21,22,23,24,25,26,27,28,29,30,31,58,42,63,92,47
};
/// <summary>
/// 自定义非法字符
/// </summary>
private static readonly char[] InvalidCustomChars = new char[]{
'\'','"','~','`','!','@','#','$','%','^','&','*','(',')','+','=','>','<',
'|','{','}','/','\\',':',';',',','?'
};
/// <summary>
/// 判断字符的Unicode值是否是汉字
/// </summary>
/// <param name="code">字符的Unicode</param>
/// <returns></returns>
protected static bool IsChineseLetter(int code)
{
int chfrom = System.Convert.ToInt32("4e00", 16); //范围(0x4e00~0x9fff)转换成int(chfrom~chend)
int chend = System.Convert.ToInt32("9fff", 16);
if (code >= chfrom && code <= chend)
{
return true; //当code在中文范围内返回true
}
else
{
return false; //当code不在中文范围内返回false
}
return false;
}
}