区分大小写

sanitize upper vs lower case

本文关键字:大小写      更新时间:2023-09-26

清除字符串时,字符会转换为lowercase而不是uppercase,这是有原因的吗?

我在许多语言中都看到过这种约定,但就我当前的环境而言,我们会说Rails和/或Javascript

据我所知,没有具体的原因,但无论是大写还是小写都不是Unicode世界的全部。

例如,德语字母ßss完全等价;它们都是小写字母,用ß拼写的单词也可以用ss拼写。

相反,在土耳其语中,ı(无点i)与i(有点i)不同,但除非您的语言环境是土耳其文,否则任何一个大写字母都会产生I(无点ASCII i)。这也改变了意义。你不想用错一个;它们并不等同。

正因为如此,一些编程语言根据Unicode标准第3.13节中的大小写折叠规则提供了更具体的"大小写规范化"转换;Python 3.3引入str.casefold就是出于这个原因。它很像.lower(),但也会将像ßss这样的东西标准化,因为它们在逻辑上是等价的(如果你不想将仅在ßss中不同的两个字符串视为不同的)。

如果您的语言中没有可用的大小写折叠,那么规范化为大写和小写之间的区别主要是根据惯例。

Javascript有toLowerCase()和toUpperCase()。你可以使用任何一个!

不过,我认为你的问题的答案实际上源于unix系统几十年前决定使用区分大小写的命令,并使用所有小写命令。这在Apache中转换为区分大小写的url,并且为了实现跨O/S兼容,我们只确保所有内容都是小写的。

我想所有的大写都可以,有时也会使用,但它也令人讨厌:)