首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >ToLower对ToLowerInvariant

ToLower对ToLowerInvariant
EN

Stack Overflow用户
提问于 2015-06-11 10:28:57
回答 2查看 6.1K关注 0票数 2

我只是在寻找这两种方法产生不同结果的任何例子。首先,我访问msdn页面,并从其中运行代码,并进行一些小的更改。

代码语言:javascript
复制
using System;
using System.Globalization;
using System.Linq;

class Program
{
    static void Main()
    {
        string[] words = { "Tuesday", "Salı", "Вторник", "Mardi", 
                         "Τρίτη", "Martes", "יום שלישי", 
                         "الثلاثاء", "วันอังคาร" };
        Console.BufferHeight = 1000;
        var test = CultureInfo.GetCultures(CultureTypes.AllCultures)
                              .Select(ci =>
                                      {
                                          string[] wordsToLower = words.Select(x => x.ToLower(ci)).ToArray();
                                          string[] wordsToLowerInvariant = words.Select(x => x.ToLowerInvariant()).ToArray();
                                          return new
                                                 {
                                                     Culture = ci,
                                                     ToLowerDiffers = !wordsToLower.SequenceEqual(wordsToLowerInvariant)
                                                 };
                                      })
                              .ToArray();
        foreach (var x in test)
        {
            Console.WriteLine("Culture {0}, ToLower and ToLowerInvariant produces different results: {1}", x.Culture, x.ToLowerDiffers);
        }
        Console.WriteLine();
        Console.WriteLine("Difference exists for any ToLower call: {0}", test.Any(x => x.ToLowerDiffers));
    }
}

但是这里我有一个问题:这段代码为所有现有区域性中的ToLowerToLowerInvariant调用产生相同的输出。

所以问题是:有什么字符串会为这个测试产生不同的结果吗?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2015-06-11 10:38:19

试试土耳其虚线İ

代码语言:javascript
复制
var culture = new CultureInfo("tr-TR");

string test = "İ";

if (test.ToLower(culture) == test.ToLowerInvariant())
    Console.WriteLine("Same");
else
    Console.WriteLine("Different"); // Prints this!
票数 7
EN

Stack Overflow用户

发布于 2015-06-11 10:50:31

xxxInvariant假定区域性设置为默认设置。为了能够显示差异,您应该使用与设置中的默认区域性不同的区域性信息来演示ToLower和ToLowerInvariant。默认情况下,默认文化是系统文化。

因此,如果您的系统文化是en-US,并且您在代码中只使用en-US字符,ToLower和ToLowerInvariant将给出相同的结果。

据我所知,如果您在ToLowerInvariant之后将"Salı“更改为"Sali”,则应该得到"SALI“。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30778301

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档