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
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; |
|
} |
|
|
|
|
|
}
|
|
|