我已经看到这样做的示例代码:
getString(R.string.title_section1).toUpperCase(l)
1 在那里做什么?
这个参数不应该是一个整数 1,在我看来像 l 这实际上是一个使用规则的语言环境,这个字符串将被转换为大写。
它不是整数,大写方法只有两种变体:
String toUpperCase() 使用默认语言环境的规则将此字符串中的所有字符转换为大写。
String toUpperCase(Locale locale) 使用给定 Locale 的规则将此 String 中的所有字符转换为大写。
Locale 对象在逻辑上由下面描述的字段组成。
语言 ISO 639 alpha-2 或 alpha-3 语言代码,或最多 8 个字母字母的注册语言子标签(用于未来增强)。当一种语言同时具有 alpha-2 代码和 alpha-3 代码时,必须使用 alpha-2 代码。您可以在 IANA 语言子标签注册表中找到有效语言代码的完整列表(搜索“类型:语言”)。语言字段不区分大小写,但 Locale 始终规范化为小写。
格式良好的语言值具有 [a-zA-Z]{2,8} 的形式。请注意,这不是完整的 BCP47 语言产品,因为它不包括 extlang。它们不是必需的,因为现代的三字母语言代码取代了它们。
示例:“en”(英语)、“ja”(日语)、“kok”(康卡尼语)
脚本 ISO 15924 alpha-4 脚本代码。您可以在 IANA 语言子标签注册表中找到有效脚本代码的完整列表(搜索“类型:脚本”)。script 字段不区分大小写,但 Locale 始终规范化为标题大小写(第一个字母为大写,其余字母为小写)。
格式良好的脚本值具有 [a-zA-Z]{4} 形式
示例:“Latn”(拉丁文)、“Cyrl”(西里尔文)
国家(地区)ISO 3166 alpha-2 国家代码或 UN M.49 numeric-3 区域代码。您可以在 IANA 语言子标签注册表中找到有效国家和地区代码的完整列表(搜索“类型:地区”)。国家(地区)字段不区分大小写,但 Locale 始终规范化为大写。
格式正确的国家/地区值的格式为 [a-zA-Z]{2} | [0-9]{3}
示例:“US”(美国)、“FR”(法国)、“029”(加勒比)
变体 用于指示区域设置变体的任意值。如果有两个或多个变体值,每个值都表示自己的语义,这些值应按重要性排序,最重要的值在前,用下划线('_')分隔。变体字段区分大小写。
注意:IETF BCP 47 对变体子标签施加了句法限制。此外,BCP 47 子标签严格用于指示定义语言或其方言的附加变体,这些变体未被语言、脚本和区域子标签的任何组合所涵盖。您可以在 IANA 语言子标签注册表中找到有效变体代码的完整列表(搜索“类型:变体”)。但是,Locale 中的变体字段历来用于任何类型的变体,而不仅仅是语言变体。例如,Java SE 运行时环境中可用的一些受支持变体指示了替代文化行为,例如日历类型或数字脚本。在 BCP 47 中,这种不识别语言的信息由扩展子标签或私人使用子标签支持。
格式正确的变体值的形式为 SUBTAG (('_'|'-') SUBTAG)* 其中 SUBTAG = [0-9][0-9a-zA-Z]{3} | [0-9a-zA-Z]{5,8}。(注意:BCP 47 只使用连字符('-')作为分隔符,这样比较宽松)。
示例:“polyton”(多调希腊语)、“POSIX”
extensions 从单个字符键到字符串值的映射,表示除语言标识之外的扩展。Locale 中的扩展实现了 BCP 47 扩展子标签和私有使用子标签的语义和语法。扩展不区分大小写,但 Locale 将所有扩展键和值规范化为小写。请注意,扩展不能有空值。
格式良好的键是集合 [0-9a-zA-Z] 中的单个字符。格式正确的值具有 SUBTAG ('-' SUBTAG)* 的形式,其中键 'x' SUBTAG = [0-9a-zA-Z]{1,8} 和其他键 SUBTAG = [0-9a-zA -Z]{2,8}(即 'x' 允许单字符子标签)。
示例:key="u"/value="ca-japanese"(日本日历),key="x"/value="java-1-7" 注意:虽然 BCP 47 要求字段值以 IANA 语言注册Subtag Registry,Locale 类不提供任何验证功能。Builder 仅检查单个字段是否满足语法要求(格式正确),但不验证值本身。有关详细信息,请参阅 Locale.Builder。