Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.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# 不变文化的Java等价物_C#_Java_Culture - Fatal编程技术网

C# 不变文化的Java等价物

C# 不变文化的Java等价物,c#,java,culture,C#,Java,Culture,我正在将下面的C#代码转换为Java。是否有一个Java等价于.NET不变文化的概念 string upper = myString.ToUpperInvariant(); 由于不变文化实际上只是美国文化,我可以在Java中做类似的事情,但我想知道是否有更好的方法: String upper = myString.toUpperCase(Locale.US); 更新:引入Java 6,描述如下: 这被视为所有区域设置的基本区域设置,并用作区域设置敏感操作的语言/国家中立区域设置 这可能比使用

我正在将下面的C#代码转换为Java。是否有一个Java等价于.NET不变文化的概念

string upper = myString.ToUpperInvariant();
由于不变文化实际上只是美国文化,我可以在Java中做类似的事情,但我想知道是否有更好的方法:

String upper = myString.toUpperCase(Locale.US);
更新:引入Java 6,描述如下:

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

这可能比使用我们好,但我没有对照下面的代码检查它


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

编辑:事实上,一个快速测试程序显示,在美国区域性的.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"));
            }
        }
    }    
}
我现在没有时间看这些,但值得调查。我不知道同样的差异是否也适用于Java——您可能希望从中抽取一个示例,并计算出您希望代码做什么

编辑:作为一个完美主义者,值得一提的是,它只检查单个字符。。。而实际上,你是整个管柱的上套管,这可能会有所不同


查看上框的Java代码,它似乎只有tr、az和lt国家/地区的特定于语言环境的行为。我知道tr是土耳其,但我不知道其他的…

这看起来是使用任何语言环境都可以得到的最不变的w/o。 如果您喜欢扩展Unicode(超过UTF16),则需要使用代码点解决方案(如果您不知道代码点,则不需要它:)

静态字符串大小写(字符串s){
char[]c=s.toCharArray();

对于(inti=0;iouchy:az-阿塞拜疆,它是立陶宛那又如何?(Per.)@AvPinzur:yes,这可能是最合适的。我会更新以提及它。
00b5
0131
017f
01c5
01c8
01cb
01f2
0345
0390
03b0
03c2
03d0
03d1
03d5
03d6
03f0
03f1
03f5
1e9b
1fbe
 static String toUpperCase(String s){
    char[] c = s.toCharArray();
    for (int i=0;i<c.length;i++){
        c[i]=Character.toUpperCase(c[i]);
    }
    return String.copyValueOf(c);  
 }