我正在将以下 C# 代码转换为 Java。 Java 中是否存在与 .NET 中的文化不变概念相当的概念?
string upper = myString.ToUpperInvariant();
由于不变文化实际上只是美国文化,我可以在 Java 中做类似的事情,但我想知道是否有更好的方法:
String upper = myString.toUpperCase(Locale.US);
更新:引入 Java 6Locale.ROOT https://docs.oracle.com/javase/8/docs/api/java/util/Locale.html#ROOT其描述为:
这被视为所有区域设置的基本区域设置,并用作区域设置敏感操作的语言/国家中立区域设置。
这可能比使用 US 更好,但我还没有对照下面的代码进行检查。
不,这基本上是正确的方法。在那里时are美国文化和不变文化在格式方面的差异,我不认为它们会影响大小写规则。
编辑:实际上,一个快速测试程序显示在那里are美国文化中的 .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"));
}
}
}
}
Output:
00b5
0131
017f
01c5
01c8
01cb
01f2
0345
0390
03b0
03c2
03d0
03d1
03d5
03d6
03f0
03f1
03f5
1e9b
1fbe
我现在没有时间看这些,但值得研究一下。我不知道同样的差异是否适用于 Java - 您可能想获取其中的样本并找出您希望代码执行的操作。
编辑:为了完整,值得一提的是,这只检查单个字符......而您实际上是大写整个字符串,这可能会产生影响。
看着Java大写字母代码,似乎仅对 tr、az 和 lt 国家/地区具有特定于区域设置的行为。我知道tr是土耳其,但我不知道其他的......
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)