- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我需要确定给定的 NSString 是否为 NFD 形式。我该怎么做?
上下文:
我从 Mac OS(以 NSString 的形式)获得的文件路径是规范分解形式 (NFD)。当文件系统是 HFSPlus 时尤其如此。 http://developer.apple.com/mac/library/technotes/tn/tn1150.html#CanonicalDecomposition
我需要一个预组合的字符串。现在,仅当我知道文件名已分解为 NFD 形式时,我才想运行 precomposedStringWithCanonicalMapping
函数。
我能想到的解决方案:
//works on the idea that NFD(NFD(x)) = NFD(x)
BOOL IsCanonicallyDecompsed(NSString *initialFilePath) {
//decompose the string to NFD form
NSString *nfdFormOfStr = [initialFilePath decomposedStringWithCanonicalMapping];
char *ndfFormUTF8 = [nfdFormOfStr UTF8String];
char *intialPathUTF8 = [initialFilePath UTF8String];
return (strcmp(ndfFormUTF8, intialPathUTF8) == 0);
}
我的解决方案可以吗?另外,我对文件系统输出(在 NFD 中)的理解是否正确?
最佳答案
如果您需要预组合字符串 (NFC),最简单和最安全的做法是始终运行 precomposedStringWithCanonicalMapping
,无论该字符串是否为 NFD。例如,您可能会得到一个字符串,其中一些字符是预组合的,一些是分解的。
请注意,HFS+ 文件系统使用 NFD 的修改版本,其中一些代码点范围保持预先组合以与 Mac OS 9 兼容;我不知道decomposedStringWithCanonicalMapping
函数是否使用与HFS+ 相同的规则。
关于objective-c - 如何确定一个 NSString 在 NFD 中是否规范化?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3656350/
鉴于现在有一些代码点的文本与表情符号显示的选择器,这些代码点的正确分解形式是什么?例如,❤︎ (U+2764) 默认为文本表示,但如果后跟 VS-16 (U+fe0f) 可以变成表情符号:❤️。您可以
我找到了一个片段,上面写着 Any-Latin; NFD; [:Nonspacing Mark:] Remove; NFC; [:Punctuation:] Remove; Lower(); ...并
Unicode Normalization FAQ包括以下段落: Programs should always compare canonical-equivalent Unicode strings
我需要确定给定的 NSString 是否为 NFD 形式。我该怎么做? 上下文: 我从 Mac OS(以 NSString 的形式)获得的文件路径是规范分解形式 (NFD)。当文件系统是 HFSPlu
根据py3 doc : unicodedata.decomposition(chr) Returns the character decomposition mapping assigned to t
在我的应用程序中,我必须使用 NFD Unicode 系统规范化 NSString。我怎样才能做到这一点?我需要将用户输入的字符串转换为标准化字符串,然后从这个标准化字符串中计算出一个数字。谁能帮帮我
问题 问题很简单:我有包含这个值的 XML 穆勒 这似乎是用变音符号表示 u 的有效 XML 格式,就像这样。 穆勒 但是到目前为止,我们尝试过的所有解析器都会生成 u¨ —— 两个不同的字符。 背景
Mac 通常在标准化路径的 HFS+ 文件系统上运行。也就是说,例如,如果您保存一个带有重音符号 é 的文件 (u'\xe9'),然后执行 os.listdir,您将看到文件名已转换为 u'e\u03
我在这里克隆了最早版本的 Torque 3D:Github - Torque3D.我使用项目管理器工具生成了一个“空”模板项目,然后启动 VS2013 Professional 进入构建过程。 在 V
我从 OSX 文件系统获取的 NFD Unicode 字符串有问题。 这是我在 OSX“A\xcc\x88”上得到的“Ä”-元音变音符号,这是我期望的“\xc3\x84”。相同的功能在 Windows
这两种方法似乎都完成了从字符串中删除重音符号的相同工作,但我不确定是否存在一些内部差异,可以使一种方法优于另一种方法 最佳答案 分解处理的不仅仅是重音(在 Unicode 中称为标记),例如韩文音节
我想知道在 Java 中处理德语、日语、韩语中的特殊字符(如 β)以及在 C 中处理 utf8 是否存在问题。 我们在 java 端使用 java.text.Normalizer.Form.NFD 并
是否有实现 UTF8 规范化器(NFD、NFKD、NFC、NFKC)的 native gem(因此可用于 jruby 1.8.2)? 最佳答案 Ruby v1.8 在 Unicode 上真的很不稳定。
我是一名优秀的程序员,十分优秀!