當前位置: 首頁>>代碼示例 >>用法及示例精選 >>正文


R icuSetCollate 按 ICU 設置整理


R語言 icuSetCollate 位於 base 包(package)。

說明

控製 ICU 完成整理的方式(ICU 的可選部分)R建造)。

用法

icuSetCollate(...)

icuGetCollate(type = c("actual", "valid"))

參數

...

命名參數,請參閱“詳細信息”。

type

字符串:可以縮寫。用於排序規則的實際區域設置或有效的最具體區域設置。

細節

可選地,R可以通過 ICU 構建來整理字符串(https://icu.unicode.org/)。對於這樣的係統,icuSetCollate可用於調整整理的方式。在其他版本上,調用此函數不會執行任何操作,並會發出警告。

可能的參數是

locale

字符串,例如 "da_DK",給出要使用其排序規則的語言和國家/地區。如果存在,這應該是第一個參數。

case_first

"upper""lower""default" ,要求首先對大寫或小寫字符進行排序。默認值通常是小寫開頭,但並非在所有語言中(例如,在丹麥語的默認設置下)。

alternate_handling

控製‘variable’字符(主要是標點符號)的處理。可能的值為"non_ignorable"(初級強度)和"shifted"(四級強度)。

strength

應該使用哪些組件?可能的值 "primary""secondary""tertiary" (默認)、 "quaternary""identical"

french_collation

在法語語言環境中,重音影響排序規則的方式是從右到左,而在大多數其他語言環境中是從左到右。可能的值 "on""off""default"

normalization

字符串應該標準化嗎?可能的值為"on""off"(默認值)。這會影響複合字符的排序規則。

case_level

二級和三級之間的附加級別,用於區分大小日語假名字符。可能的值"on""off"(默認)。

hiragana_quaternary

可能的值 "on" (首先在四進製級別對平假名進行排序)和 "off"

除了那些對整理和專門要求有詳細了解的人之外,隻有前三個可能會感興趣。

locale 接受一些特殊值:

"none"

ICU 不用於排序:而是使用操作係統的排序服務。

"ASCII"

ICU 不用於排序:而是使用 C 函數 strcmp,該函數應按(無符號)數字順序逐字節排序。

"default"

從操作係統獲取區域設置,就像在會話開始時所做的那樣(Windows 上除外)。如果環境變量R_ICU_LOCALE設置為非空值,則使用其值而不是谘詢操作係統,除非環境變量LC_ALL設置為'C'(或未設置但LC_COLLATE設置為'C')。

"""root"

‘root’ 排序規則:參見https://www.unicode.org/reports/tr35/tr35-collation.html#Root_Collation.

有關 ‘real’ ICU 語言環境的規範,請參閱https://unicode-org.github.io/icu/userguide/locale/。請注意,ICU 不會報告不支持某個區域設置,而是退回到其“最適合”的想法(這可能相當不同,並且由icuGetCollate("actual"), 經常"root")。大多數英語語言環境都回落到"root"雖然例如"en_GB"是一個有效的區域設置(至少在某些平台上),它不包含特殊的排序規則。注意"C"不是受支持的 ICU 區域設置,因此R_ICU_LOCALE永遠不應該設置為"C".

一些示例是 case_level = "on", strength = "primary" 忽略重音差異,alternate_handling = "shifted" 忽略空格和標點字符。

如果操作係統設置為使用 ICU,則最初 ICU 將不會用於整理C用於排序的區域設置和R_ICU_LOCALE未設置。一旦這個函數被調用並帶有一個值locale, ICU 將被使用,直到再次調用locale = "none"。 ICU一次不會使用Sys.setlocale被稱為"C"LC_ALL或者LC_COLLATE, 即使R_ICU_LOCALE已設置。 ICU將再次使用R_ICU_LOCALE一次Sys.setlocale被調用來設置不同的排序規則。環境變量LC_ALL(或者LC_COLLATE) 優先於R_ICU_LOCALE當且僅當它們設置為'C'。由於與其他設置整理順序的方式相互作用,R_ICU_LOCALE應謹慎使用,並且僅在需要時使用。

如果指定了 locale,則所有自定義項都將重置為區域設置的默認值:如果 Sys.setlocale 更改了操作係統排序規則定位類別,則重置排序引擎。

對於 icuGetCollate ,說明正在使用的 ICU 區域設置的字符串(可能報告為 "ICU not in use" )。 ‘actual’ 語言環境可能比請求的語言環境更簡單:例如 "da" 而不是 "da_DK" :英語語言環境可能會報告 "root"

注意

除 Windows 外,隻要可用,默認情況下都會使用 ICU。由於它在內部以 UTF-8 工作,因此在 UTF-8 語言環境中效率最高。

在 Windows 上,R通常構建包括 ICU,但隻有在環境變量存在時才會使用R_ICU_LOCALE已設置,當R開始或之後icuSetCollate調用來選擇區域設置(因為 ICU 和 Windows 對區域設置名稱的理解不同)。注意icuSetCollate(locale = "default")應該工作得相當好,但發現係統默認忽略環境變量,例如LC_COLLATE.

例子


## These examples depend on having ICU available, and on the locale.
## As we don't know the current settings, we can only reset to the default.
if(capabilities("ICU")) withAutoprint({
    icuGetCollate()
    icuGetCollate("valid")
    x <- c("Aarhus", "aarhus", "safe", "test", "Zoo")
    sort(x)
    icuSetCollate(case_first = "upper"); sort(x)
    icuSetCollate(case_first = "lower"); sort(x)

    ## Danish collates upper-case-first and with 'aa' as a single letter
    icuSetCollate(locale = "da_DK", case_first = "default"); sort(x) 
    ## Estonian collates Z between S and T
    icuSetCollate(locale = "et_EE"); sort(x)
    icuSetCollate(locale = "default"); icuGetCollate("valid")
})

也可以看看

Comparisonsort

capabilities 是否有ICU可用; extSoftVersion 其版本。

ICU 用戶指南中有關整理的章節 (https://unicode-org.github.io/icu/userguide/collation/)。

相關用法


注:本文由純淨天空篩選整理自R-devel大神的英文原創作品 Setup Collation by ICU。非經特殊聲明,原始代碼版權歸原作者所有,本譯文未經允許或授權,請勿轉載或複製。