如何在android 4.2中使用toUppercase(locale)?

The*_*mit 7 android

在此输入图像描述我使用android 4.2 SDK,我收到了这行代码的警告:

String text0 = tagalogText.getText().toString();
String textA = text0.substring(0, 1).toUpperCase() + text0.substring(1).toLowerCase();
Run Code Online (Sandbox Code Playgroud)

当我将鼠标悬停在它上面时,它说:

Implicitly using the default locale is a common source of bugs: Use toUpperCase(Locale) instead.
Run Code Online (Sandbox Code Playgroud)

隐式使用默认语言环境是错误的常见来源:使用toLowerCase(Locale).

我从Java复制代码,而不是Java for android.有谁知道如何删除此错误?为什么它现在是使用这种方法的首选方式?

Nam*_*ace 5

只需要清理项目.

我遇到了同样的麻烦.我没有依赖默认的语言环境,并且明确地尝试了Locale.US和Locale.English,但仍然得到了黄色lint警告.清洁后离开.

string.toLowerCase(Locale.ENGLISH);
Run Code Online (Sandbox Code Playgroud)


sti*_*ike 0

尝试使用

text0.substring(0, 1).toUpperCase(Locale.ENGLISH);
Run Code Online (Sandbox Code Playgroud)

从这里的文档

一个常见的错误是在生成机器可读的输出时隐式使用默认区域设置。这往往适用于开发人员的测试设备(特别是因为许多开发人员使用 en_US),但在用户位于更复杂区域设置的设备上运行时会失败。

例如,如果您要格式化整数,某些区域设置将使用非 ASCII 十进制数字。另一个例子,如果您要格式化浮点数,某些区域设置将使用“,”作为小数点,并使用“.”。用于数字分组。这对于人类可读的输出是正确的,但如果呈现给另一台计算机,则可能会导致问题(例如,parseDouble(String) 无法解析这样的数字)。您还应该警惕不采用区域设置的 toLowerCase() 和 toUpperCase() 重载:例如,在土耳其,字符“i”和“I”不会转换为“I”和“i” '。对于土耳其语文本(例如用户输入)来说,这是正确的行为,但对于 HTTP 标头来说,这是不合适的。