鴻蒙OS Locale.Builder

2022-07-28 14:32 更新

Locale.Builder

java.lang.Object

|---java.util.Locale.Builder

  1. public static final class Locale.Builder
  2. extends Object

Builder 用于根據(jù) setter 配置的值構建 Locale 的實例。 與 Locale 構造函數(shù)不同,Builder 檢查由 setter 配置的值是否滿足 Locale 類定義的語法要求。 由 Builder 創(chuàng)建的 Locale 對象格式正確,可以轉換為格式正確的 IETF BCP 47 語言標簽而不會丟失信息。

注意:Locale 類不對變體提供任何語法限制,而 BCP 47 要求每個變體子標簽為 5 到 8 個字母數(shù)字或單個數(shù)字后跟 3 個字母數(shù)字。 對于不滿足此限制的變體,方法 setVariant 會引發(fā) IllformedLocaleException。 如果需要支持這種變體,請使用 Locale 構造函數(shù)。 但是,請記住,以這種方式創(chuàng)建的 Locale 對象在轉換為 BCP 47 語言標簽時可能會丟失變體信息。

以下示例顯示如何使用 Builder 創(chuàng)建 Locale 對象。

  1. Locale aLocale = new Builder().setLanguage("sr").setScript("Latn").setRegion("RS").build();

構建器可以重復使用; clear() 將所有字段重置為其默認值。

構造函數(shù)摘要

構造函數(shù) 描述
Builder() 構造一個空的 Builder。

方法總結

修飾符和類型 方法 描述
Locale.Builder addUnicodeLocaleAttribute(String attribute) 添加 unicode 語言環(huán)境屬性,如果不存在,否則無效。
Locale build() 返回從此構建器上設置的字段創(chuàng)建的 Locale 實例。
Locale.Builder clear() 將構建器重置為其初始的空狀態(tài)。
Locale.Builder clearExtensions() 將擴展重置為其初始的空狀態(tài)。
Locale.Builder removeUnicodeLocaleAttribute(String attribute) 刪除 unicode 語言環(huán)境屬性(如果存在),否則無效。
Locale.Builder setExtension(char key, String value) 設置給定鍵的擴展名。
Locale.Builder setLanguage(String language) 設置語言。
Locale.Builder setLanguageTag(String languageTag) 重置 Builder 以匹配提供的 IETF BCP 47 語言標簽。
Locale.Builder setLocale(Locale locale) 重置 Builder 以匹配提供的語言環(huán)境。
Locale.Builder setRegion(String region) 設置區(qū)域。
Locale.Builder setScript(String script) 設置腳本。
Locale.Builder setUnicodeLocaleKeyword(String key, String type) 設置給定鍵的 Unicode 語言環(huán)境關鍵字類型。
Locale.Builder setVariant(String variant) 設置變體。
從類 java.lang.Object 繼承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

構造函數(shù)詳細信息

Builder

public Builder()

構造一個空的 Builder。 所有字段、擴展和私人使用信息的默認值為空字符串。

方法詳情

setLocale

public Locale.Builder setLocale(Locale locale)

重置 Builder 以匹配提供的語言環(huán)境。 現(xiàn)有狀態(tài)被丟棄。

語言環(huán)境的所有字段必須格式正確。

具有任何格式錯誤的字段的語言環(huán)境會導致拋出 IllformedLocaleException,但出于兼容性原因接受以下三種情況除外:

  • Locale("ja", "JP", "JP") 被視為 "ja-JP-u-ca-japanese"
  • Locale("th", "TH", "TH") 被視為 "th-TH-u-nu-thai"
  • Locale("no", "NO", "NY") 被視為 "nn-NO"

參數(shù):

參數(shù)名稱 參數(shù)描述
locale 語言環(huán)境

返回:

這個建設者。

Throws:

Throw名稱 Throw描述
IllformedLocaleException 如果 locale 有任何格式錯誤的字段。
NullPointerException 如果 locale 為空

setLanguageTag

public Locale.Builder setLanguageTag(String languageTag)

重置 Builder 以匹配提供的 IETF BCP 47 語言標簽。 丟棄現(xiàn)有狀態(tài)。 Null 和空字符串會導致構建器被重置,如 clear()。 祖代標簽(請參閱 Locale#forLanguageTag)在處理之前轉換為它們的規(guī)范形式。 否則,語言標記必須是格式正確的,否則會引發(fā)異常(與 Locale.forLanguageTag 不同,它只會丟棄格式錯誤的標記和后續(xù)部分)。

參數(shù):

參數(shù)名稱 參數(shù)描述
languageTag 語言標簽

返回:

這個建設者。

Throws:

Throw名稱 Throw描述
IllformedLocaleException 如果 languageTag 格式不正確

setLanguage

public Locale.Builder setLanguage(String language)

設置語言。 如果 language 為空字符串或 null,則刪除此 Builder 中的語言。 否則,語言必須格式正確,否則會引發(fā)異常。

典型的語言值是 ISO639 中定義的兩個或三個字母的語言代碼。

參數(shù):

參數(shù)名稱 參數(shù)描述
language 語言

返回:

這個建設者。

Throws:

Throw名稱 Throw描述
IllformedLocaleException 如果 language 格式不正確

setScript

public Locale.Builder setScript(String script)

設置腳本。 如果 script 為 null 或空字符串,則刪除此 Builder 中的腳本。 否則,腳本必須格式正確,否則會引發(fā)異常。

典型的腳本值是 ISO 15924 定義的四字母腳本代碼。

參數(shù):

參數(shù)名稱 參數(shù)描述
script 腳本

返回:

這個建設者。

Throws:

Throw名稱 Throw描述
IllformedLocaleException 如果 script 格式不正確

setRegion

public Locale.Builder setRegion(String region)

設置區(qū)域。 如果 region 為 null 或空字符串,則刪除此 Builder 中的區(qū)域。 否則,該區(qū)域必須是格式良好的,否則將引發(fā)異常。

典型的區(qū)域值是兩個字母的 ISO 3166 代碼或三位數(shù)的 UN M.49 區(qū)域代碼。

由 Builder 創(chuàng)建的 Locale 中的 country 值始終標準化為大寫。

參數(shù):

參數(shù)名稱 參數(shù)描述
region 該區(qū)域

返回:

這個建設者。

Throws:

Throw名稱 Throw描述
IllformedLocaleException 如果 region 格式不正確

setVariant

public Locale.Builder setVariant(String variant)

設置變體。 如果 variant 為 null 或空字符串,則刪除此 Builder 中的變體。 否則,它必須由一個或多個格式正確的子標簽組成,否則將引發(fā)異常。

注意:此方法檢查變體是否滿足 IETF BCP 47 變體子標簽的語法要求,并將值規(guī)范化為小寫字母。 但是,Locale 類對變體沒有任何語法限制,并且 Locale 中的變體值區(qū)分大小寫。 要設置這樣的變體,請使用 Locale 構造函數(shù)。

參數(shù):

參數(shù)名稱 參數(shù)描述
variant 變體

返回:

這個建設者。

Throws:

Throw名稱 Throw描述
IllformedLocaleException 如果 variant 格式不正確

setExtension

public Locale.Builder setExtension(char key, String value)

設置給定鍵的擴展名。 如果值為 null 或空字符串,則刪除擴展名。 否則,擴展必須是格式正確的,否則會引發(fā)異常。

注意:鍵 Locale#UNICODE_LOCALE_EXTENSION ('u') 用于 Unicode 語言環(huán)境擴展。 設置此鍵的值會將任何現(xiàn)有的 Unicode 語言環(huán)境鍵/類型對替換為擴展中定義的那些。

注意:鍵 Locale#PRIVATE_USE_EXTENSION ('x') 用于私人使用代碼。 為了形成良好的格式,此鍵的值只需具有 1 到 8 個字母數(shù)字字符的子標簽,而不是一般情況下的 2 到 8 個。

參數(shù):

參數(shù)名稱 參數(shù)描述
key 擴展密鑰
value 擴展值

返回:

這個建設者。

Throws:

Throw名稱 Throw描述
IllformedLocaleException 如果 key 或 value 格式不正確

setUnicodeLocaleKeyword

public Locale.Builder setUnicodeLocaleKeyword(String key, String type)

設置給定鍵的 Unicode 語言環(huán)境關鍵字類型。 如果類型為 null,則刪除 Unicode 關鍵字。 否則,鍵必須為非空,并且鍵和類型都必須格式正確,否則將引發(fā)異常。

鍵和類型轉換為小寫。

注意:通過 setExtension(char, java.lang.String) 設置 'u' 擴展名會將所有 Unicode 語言環(huán)境關鍵字替換為擴展名中定義的關鍵字。

參數(shù):

參數(shù)名稱 參數(shù)描述
key Unicode 語言環(huán)境鍵
type Unicode 語言環(huán)境類型

返回:

這個建設者。

Throws:

Throw名稱 Throw描述
IllformedLocaleException 如果 key 或 type 格式不正確
NullPointerException 如果 key 為空

addUnicodeLocaleAttribute

public Locale.Builder addUnicodeLocaleAttribute(String attribute)

添加 unicode 語言環(huán)境屬性,如果不存在,否則無效。 該屬性不能為空,并且必須格式正確,否則將引發(fā)異常。

參數(shù):

參數(shù)名稱 參數(shù)描述
attribute 屬性

返回:

這個建設者。

Throws:

Throw名稱 Throw描述
NullPointerException 如果 attribute 為空
IllformedLocaleException 如果 attribute 格式不正確

removeUnicodeLocaleAttribute

public Locale.Builder removeUnicodeLocaleAttribute(String attribute)

刪除 unicode 語言環(huán)境屬性(如果存在),否則無效。 該屬性不能為空,并且必須格式正確,否則將引發(fā)異常。

刪除的屬性比較不區(qū)分大小寫。

參數(shù):

參數(shù)名稱 參數(shù)描述
attribute 屬性

返回:

這個建設者。

Throws:

Throw名稱 Throw描述
NullPointerException 如果 attribute 為空
IllformedLocaleException 如果 attribute 格式不正確

clear

public Locale.Builder clear()

將構建器重置為其初始的空狀態(tài)。

返回:

這個建設者。

clearExtensions

public Locale.Builder clearExtensions()

將擴展重置為其初始的空狀態(tài)。 語言、文字、地區(qū)和變體不變。

返回:

這個建設者。

build

public Locale build()

返回從此構建器上設置的字段創(chuàng)建的 Locale 實例。

這將在構造語言環(huán)境時應用 Locale#forLanguageTag 中列出的轉換。 (祖父標簽在 setLanguageTag(java.lang.String) 中處理。)

返回:

語言環(huán)境。

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號