清理大小写
sanitize upper vs lower case
是否有理由在清理字符串时将字符转换为 lowercase
而不是 uppercase
?
我在很多语言中都看到过这种约定,但就我目前的环境而言,我们会说 Rails
and/or Javascript
Javascript 有 toLowerCase() 和 toUpperCase()。您可以使用任何一个!
我认为你的问题的答案确实源于几十年前 unix 系统决定使用区分大小写和所有小写命令。这在 Apache 中转换为区分大小写的 url,并且为了交叉 O/S 兼容,我们只是确保所有内容始终为小写。
我想有时可能会使用所有大写字母,但它也令人讨厌 :)
据我所知没有具体原因,但大写和小写都不是 Unicode 世界的全部内容。
例如德文字母ß
正好等同于ss
;它们都是小写字母,拼写为 ß
的单词也可以拼写为 ss
.
相反,在土耳其语中,ı
(无点 i)与 i
(带点 i)不同,但除非您的语言环境是土耳其语,否则大写任何一个都会产生 I
(无点ASCII I).这也改变了意义。您不想使用错误的;它们不等同。
因此,某些编程语言根据 Unicode 标准第 3.13 节中的大小写折叠规则提供更具体的 "case normalizing" 转换; Python 3.3 出于这个原因引入了 str.casefold
。它很像 .lower()
,但也会将 ß
之类的东西规范化为 ss
,因为它们在逻辑上是等价的(如果你正在统一化,你不想处理两个不同的字符串仅在 ß
与 ss
中被视为不同)。
如果您的语言没有大小写折叠功能,那么规范化为大写和小写之间的区别主要是约定俗成的。
是否有理由在清理字符串时将字符转换为 lowercase
而不是 uppercase
?
我在很多语言中都看到过这种约定,但就我目前的环境而言,我们会说 Rails
and/or Javascript
Javascript 有 toLowerCase() 和 toUpperCase()。您可以使用任何一个!
我认为你的问题的答案确实源于几十年前 unix 系统决定使用区分大小写和所有小写命令。这在 Apache 中转换为区分大小写的 url,并且为了交叉 O/S 兼容,我们只是确保所有内容始终为小写。
我想有时可能会使用所有大写字母,但它也令人讨厌 :)
据我所知没有具体原因,但大写和小写都不是 Unicode 世界的全部内容。
例如德文字母ß
正好等同于ss
;它们都是小写字母,拼写为 ß
的单词也可以拼写为 ss
.
相反,在土耳其语中,ı
(无点 i)与 i
(带点 i)不同,但除非您的语言环境是土耳其语,否则大写任何一个都会产生 I
(无点ASCII I).这也改变了意义。您不想使用错误的;它们不等同。
因此,某些编程语言根据 Unicode 标准第 3.13 节中的大小写折叠规则提供更具体的 "case normalizing" 转换; Python 3.3 出于这个原因引入了 str.casefold
。它很像 .lower()
,但也会将 ß
之类的东西规范化为 ss
,因为它们在逻辑上是等价的(如果你正在统一化,你不想处理两个不同的字符串仅在 ß
与 ss
中被视为不同)。
如果您的语言没有大小写折叠功能,那么规范化为大写和小写之间的区别主要是约定俗成的。