R6RS:翻訳:Standard Libraries:1.2 Strings

R6RS:翻訳:Standard Libraries:1.2 Strings

1.2 文字列

[procedure] (string-upcase string)

[procedure] (string-downcase string)

[procedure] (string-titlecase string)

[procedure] (string-foldcase string)

これらの手続きは文字列を引き数として取り戻り値として文字列を返す。これらは Uncode のロカール非依存の大文字小文字対応にもとづき Unicode のスカラー値の列からスカラー値の列について定義されている。特に、結果の文字列の長さが入力の文字列の長さと異なることもある。特定の戻り値が引き数と string=? の意味で等価な場合、これらの手続きは新たに割り当てられた文字列の代わりに引き数をそのまま返してもよい。

string-upcase 手続きは文字列を大文字に変換する。 string-downcase は文字列を小文字に変換する。 string-foldcase は文字列の case folding 対応をすべて使って大文字小文字を反転させるが、トルコ語に特有の対応は行わない。string-titlecase 手続きは最初の大文字になりうる文字を char-titlecase を使って変換し、他の文字を小文字に変換する。

(string-upcase "Hi")         ⇒ "HI"
(string-downcase "Hi")         ⇒ "hi"
(string-foldcase "Hi")         ⇒ "hi"

(string-upcase "Straße")         ⇒ "STRASSE"
(string-downcase "Straße")         ⇒ "straße"
(string-foldcase "Straße")         ⇒ "strasse"
(string-downcase "STRASSE")          ⇒ "strasse"

(string-downcase "Σ")         ⇒ "σ"

; Chi Alpha Omicron Sigma:
(string-upcase "ΧΑΟΣ")         ⇒ "ΧΑΟΣ"
(string-downcase "ΧΑΟΣ")         ⇒ "χαος"
(string-downcase "ΧΑΟΣΣ")         ⇒ "χαοσς"
(string-downcase "ΧΑΟΣ Σ")         ⇒ "χαος σ"
(string-foldcase "ΧΑΟΣΣ")         ⇒ "χαοσσ"
(string-upcase "χαο?")         ⇒ "ΧΑΟΣ"
(string-upcase "χαοσ")         ⇒ "ΧΑΟΣ"

(string-titlecase "kNock KNoCK")
        ⇒ "Knock Knock"
(string-titlecase "who’s there?")
        ⇒ "Who’s There?"
(string-titlecase "r6rs")         ⇒ "R6Rs"
(string-titlecase "R6RS")         ⇒ "R6Rs"

: これらの手続きで実装される大文字小文字の対応は Unicode Consortium の UnicodeData.txt、 SpecialCasing.txt、 WordBreakProperty.txt (“MidLetter” 属性で部分的に大文字小文字を無視できる文字が定義されている)、CaseFolding.txt から抽出することができる。

これらの手続きはロカール非依存であるため、ロカールによっては不適切であることもある。

: Σ の正しい大文字小文字化と string-titlecase に必要な語区切りは Unicode 標準の付録 #29 で定義されている [5]。

[procedure] (string-ci=? string1 string2 string3 ...)

[procedure] (string-ci<? string1 string2 string3 ...)

[procedure] (string-ci>? string1 string2 string3 ...)

[procedure] (string-ci<=? string1 string2 string3 ...)

[procedure] (string-ci>=? string1 string2 string3 ...)

これらの手続きは string=? 等と類似であるが、大文字小文字を無視した文字列について動作する。

(string-ci<? "z" "Z")         ⇒ #f
(string-ci=? "z" "Z")         ⇒ #t
(string-ci=? "Straße" "Strasse") 
        ⇒ #t
(string-ci=? "Straße" "STRASSE")
        ⇒ #t
(string-ci=? "ΧΑΟΣ" "χαοσ")
        ⇒ #t

[procedure] (string-normalize-nfd string)

[procedure] (string-normalize-nfkd string)

[procedure] (string-normalize-nfc string)

[procedure] (string-normalize-nfkc string)

これらの手続きは文字列を引き数にとり戻り値として文字列を返す。戻り値はそれぞれ Unicode 正規形の D、 KD、 C、 KC である。特定の戻り値が引き数と string=? の意味で等価な場合、これらの手続きは新たに割り当てられた文字列の代わりに引き数をそのまま返してもよい。

(string-normalize-nfd "\xE9;")
        ⇒ "\x65;\x301;"
(string-normalize-nfc "\xE9;")
        ⇒ "\xE9;"
(string-normalize-nfd "\x65;\x301;")
        ⇒ "\x65;\x301;"
(string-normalize-nfc "\x65;\x301;")
        ⇒ "\xE9;"

Last modified : 2011/08/01 00:43:29 UTC