问题标签 [case-folding]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
9065 浏览

go - 如何在 Go 中创建不区分大小写的地图?

我想要一个键不敏感的字符串作为键。它是由语言支持还是我必须自己创建?谢谢你

编辑:我正在寻找的是一种默认方式,而不是每次使用地图时都必须记住转换键。

0 投票
3 回答
5506 浏览

python - python: lower() 德语变音符号

我在将带有变音符号的大写字母转换为小写字母时遇到问题。

A、O 和 U 被正确转换,但 Ä、Ö 和 Ü 保持大写。有任何想法吗?

.decode('utf-8') 解决了第一个问题,但我还有第二个问题:

回溯(最后一次调用):文件“Untitled.py”,第 4 行,在 original_message=original_message.replace("ä", "x") UnicodeDecodeError: 'ascii' codec can't decode byte 0xc3 in position 0: ordinal不在范围内(128)

0 投票
2 回答
519 浏览

unicode - 案例折叠后需要标准化

给定一个 NFC 规范化字符串,对该字符串应用全大小写折叠,我可以假设结果也是 NFC 规范化的吗?

我不明白 Unicode 标准在这句话中试图告诉我什么:

规范化也与案例折叠相互作用。对于任何字符串 X,令 Q(X) = NFC(toCasefold(NFD(X)))。换句话说,Q(X) 是对 X 进行归一化,然后对结果进行大小写折叠,然后将结果放入归一化形式 NFC 格式的结果。由于定义归一化和大小写折叠的方式,Q(Q(X)) = Q(X)。重复应用 Q 不会改变结果;对于规范化形式 NFC 或 NFD,案例折叠在规范规范化下关闭。

0 投票
2 回答
1341 浏览

java - 假设 Unicode 和不区分大小写,模式“..”是否应该匹配“FfIsS”?

0 投票
2 回答
2566 浏览

unicode - Unicode 大小写折叠为大写

根据该格式的官方规范,我正在尝试实现一个用于读取 Microsoft CFB(复合文件二进制)格式文件的库。该规范可从该站点获得。

简而言之-文件的某些结构存储在红黑树中。我对用于在该树中存储这些结构的比较谓词有疑问。规范说,如果这些结构的名称(字符串存储为 UTF-16,Windows API 中的标准)不同,则有必要遍历每个 UTF-16 代码点,并且:

(...)使用 Unicode 默认大小写转换算法、简单大小写转换变体(简单大小写折叠)转换为大写,并带有以下注释。<2> 比较每个大写的 UTF-16 代码点二进制值。

<2>参考资料说:

或 Windows XP 和 Windows Server 2003:复合文件实现符合 Unicode 3.0.1 默认大小写转换算法,简单大小写折叠 ( http://www.unicode.org/Public/3.1-Update1/CaseFolding-4.txt )除了以下例外。

但是,当我查看引用的大小写折叠文件并阅读其中引用的UTR #21 “Case Mapping”时,我意识到大小写折叠被定义为与小写字母更相似的操作,而不是大写字母。套管。

通过使用CaseFolding-4.txt,我们可以得到大写字母到小写字母的大小写折叠映射。映射始终是 1 对 1,因为这里不需要完全折叠(扩展为多个字符的那些)。然而,小写字母到大写字母的反向映射不再那么简单了。例如,

因此,我们无法知道是否03B2应该转换为0392or 03D0。标准是否定义了像折叠成大写这样的东西?也许我应该使用大小写折叠,然后转换为大写?还是我完全错误地理解了规范?

0 投票
1 回答
79 浏览

unicode - 执行 unicode 大小写折叠后字符串的最大长度

我需要对一组字符串执行大小写折叠,并且必须事先确保它们在完成后不会超过给定的长度(硬编码所需的缓冲区大小)。问题是在应用大小写折叠后字符串长度(以代码点为单位)可能会发生变化。参见,例如,在 Python3 中:

现在,一个字符串在执行大小写折叠后可能包含的最大代码点数可以很容易地计算出来:

但它在所有情况下都有效吗?我的意思是,由于Unicode的一些神秘属性,代码点的序列(它们出现的顺序)是否可能会影响字符串的最终长度?或者我可以假设最终的字符串总是最多比原始字符串长 3 倍吗?

0 投票
2 回答
59 浏览

python - 鉴于我知道较长的字符串不区分大小写匹配,我应该如何从另一个字符串的开头删除一个字符串?

假设我有一个工作流,其中涉及检查一个长字符串的开头(LS比如说),看看它是否以一个较短的字符串开头SS。如果是这样,我砍掉匹配的部分LS并对剩余的部分做一些事情。否则,我会做其他事情。(引发这个问题的具体案例是一个解析库。)

这很简单。不过,现在假设我想做同样的事情,但这次我希望字符串不区分大小写。可以测试是否“LS.startswith(SS)但不区分大小写”。但是当我将它传递给 时,我应该如何确定LS要“砍掉”action_on_match()多少?像以前一样使用是不够的len(SS),因为如果我是大写或小写或大小写折叠的东西,那么匹配前缀的长度LS可能不是我所期望的:改变字符串的大小写可以改变它的长度. 重要的是,LS传递的部分action_on_match()与程序作为输入接收的内容完全相同(当然,在截止点之后)。


回答者建议使用lower()并保留使用len(SS),但这不起作用:

在这里我们希望看到'Match: asdf',但是有一个额外的字符。

0 投票
2 回答
7658 浏览

python - 在使用 casefold() 时,我收到一个错误,因为“AttributeError: 'str' object has no attribute 'casefold'”

错误:

0 投票
2 回答
330 浏览

unicode - U_FOLD_CASE_DEFAULT 指的是哪些大小写折叠类型?

我正在 JavaScript 函数中实现大小写折叠。我已经从 CaseFolding.txt 文件中生成了所需的 JavaScript 代码。

的文档U_FOLD_CASE_DEFAULT说 ICU 将使用:

CaseFolding.txt 中定义的默认映射。

我想确认使用类型CF是默认选项。我知道T根据文档被排除在外。

A. 要进行简单的大小写折叠,请使用状态为 C + S 的映射。

B. 要进行完整的大小写折叠,请使用状态为 C + F 的映射。

根据所需的大小写折叠行为,可以使用或省略状态为 T 的映射。(默认选项是排除它们。)

我是否从中选择了正确的值CaseFolding.txt

0 投票
1 回答
3318 浏览

python - 我应该使用 Python casefold 吗?

最近在阅读忽略大小写时的 casefold 和字符串比较。我读过 MSDN 标准是使用 InvariantCulture 并且绝对避免使用 toLowercase。但是,从我读过的内容来看,casefold 就像一个更具侵略性的 toLowercase。我的问题是我应该在 Python 中使用 casefold 还是有更多的 Pythonic 标准可以代替?另外,casefold 是否通过了土耳其测试?