Java相当于Invariant Culture

Jos*_*ark 25 c# java culture

我正在将以下C#代码转换为Java.是否存在与Invariant Culture的.NET概念相当的Java?

string upper = myString.ToUpperInvariant();
Run Code Online (Sandbox Code Playgroud)

由于Invariant Culture实际上只是美国文化,我可以在Java中做这样的事情,但我想知道是否有更好的方法:

String upper = myString.toUpperCase(Locale.US);
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 22

更新:引入了Java 6 Locale.ROOT,其描述如下:

这被视为所有语言环境的基本语言环境,并用作区域设置敏感操作的语言/国家/地区中性区域设置.

这可能比使用US更好,但我没有根据下面的代码检查它.


不,这基本上是正确的方法.虽然在格式方面,美国文化和不变的文化差异,我不相信它们会影响大小写规则.

编辑:其实,一个快速的测试程序显示了存在字符,这是大写的,在美国文化.NET不同在不变的文化:

using System;
using System.Globalization;

class Test
{
    static void Main()
    {
        CultureInfo us = new CultureInfo("en-US");
        for (int i = 0; i < 65536; i++)
        {
            char c = (char) i;
            string s = c.ToString();
            if (s.ToUpperInvariant() != s.ToUpper(us))
            {
                Console.WriteLine(i.ToString("x4"));
            }
        }
    }    
}
Run Code Online (Sandbox Code Playgroud)

输出:

00b5
0131
017f
01c5
01c8
01cb
01f2
0345
0390
03b0
03c2
03d0
03d1
03d5
03d6
03f0
03f1
03f5
1e9b
1fbe
Run Code Online (Sandbox Code Playgroud)

我现在没时间看这些,但值得研究.我不知道Java中是否会存在相同的差异 - 您可能想要对它们进行抽样并找出您希望代码执行的操作.

编辑:只是为了成为completist,值得一提的是,只检查单个字符......而你真的是整个字符串的上限,这可能会产生影响.

查看上层大小的Java代码,看起来只有tr,az和lt国家/地区的特定于语言环境的行为.我知道tr是土耳其,但我不知道其他人......