gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-01 23:55:59 25 4
gpt4 key购买 nike

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

>>> "süß".casefold()
'süss'

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

>>> max(len(chr(s).casefold()) for s in range(0x10FFFF + 1))
3

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

最佳答案

Unicode standard定义 casefolding 如下:

toCasefold(X): Map each character C in X to Case_Folding(C).

因此,无论上下文如何,字符串中的每个字符都会进行大小写折叠,并将结果连接起来。这意味着您的假设是正确的:一个 casefolded 字符串保证最多有原始代码点数的三倍。

关于unicode - 执行 unicode 大小写折叠后字符串的最大长度,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23759382/

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