gpt4 book ai didi

javascript - .toUpperCase 将一些字符一分为二? .toLowerCase 也可以这样做吗?

转载 作者:行者123 更新时间:2023-11-29 15:57:34 27 4
gpt4 key购买 nike

今天早上我的印象是 .toUpperCase 和 .toLowerCase 只翻译基本的拉丁字符 a-z 和 A-Z 而留下更“奇特”的字符,但当然,仔细检查后,事实并非如此......

console.log( "fi".toLowerCase() ); // this yields a single char
>fi

console.log( "fi".toUpperCase() ); // this yields two chars
>FI

阅读规范后,javascript 似乎正在应用“Unicode 默认大小写转换算法”,而且要复杂得多。 Unicode 规范说大写、小写和标题大小写之间的各种映射由两个文件 UnicodeData.txt 和 SpecialCasing.txt 定义,我对此不怀疑,试图充分理解它们回答我的问题使我濒临脑出血的边缘。在我继续之前,我想我会问是否有更熟悉 Unicode 的人知道......


编辑:感谢您到目前为止的建议,但这是我的问题...

是否有任何 unicode upperlower 大小写转换可能会将一个字符拆分为多个字符?


如果是这样,是否有规范的 javascript 方法来进行不拆分任何字符的大小写转换?我想要一个大小写转换方法来使单个 char 子字符串搜索不区分大小写。因此,结果是否是混合大小写的字符串并不重要,只要它是一致的即可,即单个字符始终被转换为单个字符,无论是大写字符还是小写字符。

最佳答案

你会遇到一个问题。需要进行一些转换才能生成多个字符。 ß 是一种奇特的德语写法 ss,但是大写字母 错误地不符合 Unicode 的大小写规则,因此对于历史背景- 转换为大写的兼容性将使其成为 SS。同样,©(带点的大写 i)小写为 (不幸的是,它看起来像一个普通的小写 i,但它实际上是小写的 i 后跟 COMBINING DOT ABOVE)。这些实际上是 Unicode 的 SpecialCasing.txt 中的前两个示例.

要点是,有时没有执行一对一字符转换的大小写折叠解决方案。您需要编写算法来处理搜索单个字符实际上搜索一对字符的情况,或者只是接受您的算法不可移植。

通常的解决方案是这样的:

  1. Complete case folding to convert both operands to the most caseless, composed form available
  2. Substring search对于归一化大海捞针中的归一化针

关于javascript - .toUpperCase 将一些字符一分为二? .toLowerCase 也可以这样做吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57308215/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com