Unicode 表达式 @ "p{Lt}" 与标题大小写字符串不匹配



我正在尝试使用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);

最新更新