java具备什么文化,相当于Java不变文化

I am converting the following C# code to Java. Is there a Java equivalent to the .NET concept of Invariant Culture?

string upper = myString.ToUpperInvariant();

Since the Invariant Culture is really just the US culture, I could just do something like this in Java, but I'm wondering if there is a better way:

String upper = myString.toUpperCase(Locale.US);

解决方案

No, that's basically the right way to go. While there are differences between the US culture and the invariant culture in terms of formatting, I don't believe they affect casing rules.

EDIT: Actually, a quick test program shows there are characters which are upper-cased differently in .NET in the US culture to in the invariant culture:

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

I don't have time to look at these right now, but it's worth investigating. I don't know if the same differences would apply in Java - you probably want to take a sample of them and work out what you want your code to do.

EDIT: And just to be completist, it's worth mentioning that that only checks for individual characters... whereas you're really upper-casing whole strings, which can make a difference.

Looking at the Java code for upper-casing, that appears to only have locale-specific behaviour for tr, az and lt countries. I know that tr is Turkey, but I don't know about the others...

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值