Microsoft将此规则用作其复杂性规则之一:
任何归类为字母字符但不是大写或小写的Unicode字符。这包括来自亚洲语言的Unicode字符。
测试通常的规则,如大写,可以像password.Any(char.IsUpper)
一样简单。
我可以在C#中使用什么测试来测试非大写或小写的字母Unicode字符?
答案 0 :(得分:8)
规则的字面翻译怎么样:
password.Any(c => Char.IsLetter(c) &&
!Char.IsUpper(c) &&
!Char.IsLower(c))
答案 1 :(得分:1)
当您将ascii a
和A
转换为unicode时,您会a
和A
显然,它们不一样。
更新: 以下是我认为你要问的一个例子:
var c = 'א';
c.Dump();
char.IsUpper(c).Dump("is upper"); // False
char.IsLower(c).Dump("is lower"); // False
char.IsLetterOrDigit(c).Dump("is letter or digit"); // True
char.IsNumber(c).Dump("is Number"); // False