我正在尝试使用unicode表达式p{Lt}验证标题大小写字符串"Sam And Will"。但是表达式不匹配字符串。还有别的办法吗?请帮助。谢谢你!
MatchCollection matches = Regex.Matches("Sam And Will", @"p{Lt}");
foreach(Match match in matches)
{
Console.WriteLine(match.Value);
}
标题大小写和首字母大写是不同的东西:
问:什么是标题大小写?
....Unicode中的标题大小写映射不同于大写映射,因为许多字符需要特殊处理。这些主要是连音和有向图,如"fl"、"dz"one_answers"lj",以及一些多音希腊字符。例如,U+01C7 (LJ)映射到U+01C8 (LJ)而不是U+01C9 (LJ)。
如果添加有向图Dz
char c = 'u01F2';
移到源字符串(无论是否在单词的开头),它将被@"p{Lt}"
找到。
顺便说一下,为了说明区别,如果你赋值一个字符串
CultureInfo ci = CultureInfo.GetCultureInfo("en-US");
string s = c + " " + char.ToLower(c, ci) + " " + char.ToUpper(c);
的值将是
"Dz dz DZ" // Dz - titlecase, dz - lowercase, DZ - uppercase
对于您的任务,考虑如下内容:
MatchCollection matches = Regex.Matches(@"Sam And Will", @"b(p{Lu})p{Ll}*b");
foreach (Match match in matches)
Console.WriteLine(match.Groups[1].Value);