Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 某些文化中的Regex和Capital I_C#_Regex - Fatal编程技术网

C# 某些文化中的Regex和Capital I

C# 某些文化中的Regex和Capital I,c#,regex,C#,Regex,在某些文化中,大写字母“I”有什么不对?我发现在某些文化中,在特殊条件下找不到中-如果您正在寻找带有标志RegexOptions.IgnoreCase的[a-z]。以下是示例代码: var allCultures = CultureInfo.GetCultures(CultureTypes.AllCultures); var allLetters = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789"; var all

在某些文化中,大写字母“I”有什么不对?我发现在某些文化中,在特殊条件下找不到中-如果您正在寻找带有标志RegexOptions.IgnoreCase的[a-z]。以下是示例代码:

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