C# 某些文化中的Regex和Capital I
在某些文化中,大写字母“I”有什么不对?我发现在某些文化中,在特殊条件下找不到中-如果您正在寻找带有标志RegexOptions.IgnoreCase的[a-z]。以下是示例代码:C# 某些文化中的Regex和Capital I,c#,regex,C#,Regex,在某些文化中,大写字母“I”有什么不对?我发现在某些文化中,在特殊条件下找不到中-如果您正在寻找带有标志RegexOptions.IgnoreCase的[a-z]。以下是示例代码: var allCultures = CultureInfo.GetCultures(CultureTypes.AllCultures); var allLetters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; var all
var allCultures = CultureInfo.GetCultures(CultureTypes.AllCultures);
var allLetters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789";
var allLettersCount = allLetters.Length;
foreach (var culture in allCultures)
{
Thread.CurrentThread.CurrentCulture = culture;
Thread.CurrentThread.CurrentUICulture = culture;
var matched = string.Empty;
foreach (var m in Regex.Matches(allLetters, "[A-Za-z0-9]", RegexOptions.IgnoreCase))
matched += m;
var count = matched.Length;
if (count != allLettersCount)
Console.WriteLine("Culture '{0}' - {1} missing; Matched: {2}", culture.Name, (allLettersCount - count).ToString(), matched);
}
输出为(注意每行中缺少大写字母I):
有趣的是,如果不使用标志“IgnoreCase”,那么它工作正常,并找到“I”。答案如下:
无点I型和点I型的外壳与其他不同
语言。这意味着
英国人不符合土耳其用户的期望。
“土耳其I”经常被用作案例问题的一个例子
对计算不敏感
另一种解释见:
Turkey
I
不是ASCII格式,而是Unicode格式。使用\w
的另一个原因。简单地说,当当前系统区域性为tr
(土耳其土耳其)时,I
不是I
的大写等价物。参见。另一段引语:,土耳其语中的I
与大多数语言的行为不同。根据Unicode标准,当小写字母i
移动到大写时,它将变成İ
(U+0130“带点的拉丁大写字母i”)。类似地,当大写字母I
移到小写时,它就变成了ı
(U+0131“拉丁小写字母Dotless I”)。。
Culture 'az' - 1 missing; Matched: ABCDEFGHJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789
Culture 'az-Cyrl' - 1 missing; Matched: ABCDEFGHJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789
Culture 'az-Cyrl-AZ' - 1 missing; Matched: ABCDEFGHJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789
Culture 'az-Latn' - 1 missing; Matched: ABCDEFGHJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789
Culture 'az-Latn-AZ' - 1 missing; Matched: ABCDEFGHJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789
Culture 'tr' - 1 missing; Matched: ABCDEFGHJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789
Culture 'tr-TR' - 1 missing; Matched: ABCDEFGHJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789