德语“升 S”字母:在小写 `U+00DF` 和大写 `U+1E9E` 之间进行 Unicode 大小写转换的编程语言?

问题描述 投票:0回答:0

根据 Wikipedia,在 2017 年,使用大写字母

(Unicode
U+1E9E
)被正式采用——至少作为一种选择——因为实际上可能是德语中全大写单词的一个子集:

同年 6 月,德国正字法委员会正式通过了一项规则,即除了之前的大写形式 ⟨SS⟩ 之外,⟨ẞ⟩ 将成为大写 ⟨ß⟩ 的选项(即变体 STRASSE 和 STRAẞE 将被同等接受有效)。2

德语的这一新增功能似乎会大大简化字符串之间的大小写比较(即“折叠大小写”比较)。请注意,我开始这个查询是为了了解 Raku(又名 Perl6)的实现,但实际上这个问题似乎可以推广到其他编程语言。这是 Raku 的默认实现——从 rfdr_Regeln_2017.pdf 的 13 个单词开始,这些单词已经小写(通过 Raku 的

.lc
函数):

~$ cat TO_ẞ_OR_NOT_TO_ẞ.txt
maß straße grieß spieß groß grüßen außen außer draußen strauß beißen fleiß heißen
~$ raku -ne '.words>>.match(/^ <:Ll>+ $/).say;' TO_ẞ_OR_NOT_TO_ẞ.txt
(「maß」 「straße」 「grieß」 「spieß」 「groß」 「grüßen」 「außen」 「außer」 「draußen」 「strauß」 「beißen」 「fleiß」 「heißen」)
~$ raku -ne '.uc.say;' TO_ẞ_OR_NOT_TO_ẞ.txt
MASS STRASSE GRIESS SPIESS GROSS GRÜSSEN AUSSEN AUSSER DRAUSSEN STRAUSS BEISSEN FLEISS HEISSEN
~$ raku -ne '.fc.say;' TO_ẞ_OR_NOT_TO_ẞ.txt
mass strasse griess spiess gross grüssen aussen ausser draussen strauss beissen fleiss heissen

令我惊讶的是,Raku 的

fc
折叠大小写实现基本上转换为小写
ss
。毫不奇怪,尝试在上/下“往返”单词和原始单词之间搜索
eq
字符串相等性都是
False
:

~$ raku -ne 'for .words {print $_.uc.lc eq $_.lc }; "".put;'  TO_ẞ_OR_NOT_TO_ẞ.txt
FalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalseFalse

折叠 (

.fc
) 单词匹配,但它们是基于
ss
字符,而不是
ß
:

~$ raku -ne 'for .words {print $_.uc.lc eq $_.fc }; "".put;' TO_ẞ_OR_NOT_TO_ẞ.txt
TrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrueTrue

从一个大写-ẞ开始,再次使用一个大写/大写的单词来证明二分法:

~$ echo "straße STRASSE STRAẞE" | raku -ne ' .put for .words;'
straße
STRASSE
STRAẞE
~$ echo "straße STRASSE STRAẞE" | raku -ne ' .lc.say for .words;'
straße
strasse
straße
~$ echo "straße STRASSE STRAẞE" | raku -ne ' for .words { say $_.lc eq "straße" };'
True
False
True
~$ echo "straße STRASSE STRAẞE" | raku -ne ' for .words { say $_.lc eq $_.fc };'
False
True
False

然后什么编程语言在小写

foldcase
大写
ß<-->之间建立了
转换,默认情况下?哪些编程语言添加了小写
ß
<--> 大写
转换,作为选项(或通过库)?

StackOverflow 上的许多问题/答案早于 2017 年的决定,所以我正在寻找最新的答案。

string unicode string-comparison raku unicode-string
© www.soinside.com 2019 - 2024. All rights reserved.