使用java中的toUpperCase()将ß.cfg转换为大写

Ume*_*thi 6 java

我正在尝试下面的代码

String s1 = "ß.cfg";
System.out.println (s.toUpperCase());
Run Code Online (Sandbox Code Playgroud)

我得到的输出是SS.CFG因为Unicode没有定义ß的大写版本,而我希望输出为ß.CFG.

我有什么方法可以实现这一点,提前谢谢

gre*_*uze 6

"ß"字符相当于"ss"(例如在德语中使用),这在您的Locale(您在应用程序中使用的Locale)中定义.

您可以尝试使用不同的Locale使用方法进行一些实验:

toUpperCase(Locale locale) 
Run Code Online (Sandbox Code Playgroud)

编辑:正如用户所说,这种方法无效,可能的workaroud(不是很优雅)是:

    String s1 = new String ("auß.cfg").replace('ß', '\u9999');
    System.out.println (s1.toUpperCase(Locale.UK).replace('\u9999', 'ß'));
Run Code Online (Sandbox Code Playgroud)


tim*_*tes 5

用于toUpperCase( Locale )明确说明这将发生的文档:

由于大小写映射并不总是1:1的char映射,因此生成的String可能与原始String的长度不同.

小写字母s - >两个字母:SS