Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/iphone/43.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Iphone NSString'的奇数结果;s等参弦_Iphone_String - Fatal编程技术网

Iphone NSString'的奇数结果;s等参弦

Iphone NSString'的奇数结果;s等参弦,iphone,string,Iphone,String,我经常遇到(罕见的)NSstring返回值不相等的情况,尽管它们在控制台中打印时看起来完全相同。例如: [string1 isEqualToString:string2] > comparing 'angelo debarre' to 'angelo debarre' 不断返回否。我已尝试使用NSString的stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet],但仍然没有成功。

我经常遇到(罕见的)NSstring返回值不相等的情况,尽管它们在控制台中打印时看起来完全相同。例如:

[string1 isEqualToString:string2]
> comparing 'angelo debarre' to 'angelo debarre'

不断返回否。我已尝试使用NSString的
stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]
,但仍然没有成功。我还尝试使用比较器,如
compare:
localizedCaseInsensitiveCompare:
,但我一直得到相同的结果。你知道我可能忽略了什么吗?

我打赌一个是空间,另一个是非破坏性空间。修剪仅删除前缀和后缀处的ChatActer。这不会影响内部空间。

尝试使用
NSString
Unicode规范化函数之一分解字符串,如
-(NSString*)分解的StringWithCompatibilityMapping
。兼容性映射(vs规范映射)应该是您想要的,因为它将视觉上相似的字符序列分解为相同的基本组件。不过,我还没有明确查看非中断空间是否被规范化为一个空间

编辑:有两种类型的兼容性映射规范化:分解和组合。合成版本是
-(NSString*)预合成的StringWithCompatibilityMapping
。一般来说,不确定哪一种效果更好,但KC/KD表格如下所示:

规范化表单KC还折叠了在许多情况下不适当区分的兼容等效字符之间的差异。例如,半宽和全宽片假名字符将标准化为相同的字符串,罗马数字及其字母等价物也将标准化为相同的字符串

规范化表单KC和KD不能盲目地应用于任意文本。由于它们会删除许多格式差异,因此会阻止与许多传统字符集之间的往返转换,并且除非被格式标记取代,否则它们可能会删除对文本语义很重要的差异。最好将这些规范化形式视为类似于大写或小写的映射:在某些上下文中用于识别核心含义,但也对文本执行可能并不总是合适的修改。它们可以更自由地应用于具有受限字符集的域


看起来像空格但不是空格的字符(或另一个Unicode奇怪字符)。考虑把字符串作为十六进制。现在,如果这些值相同…这似乎只能部分解决我的问题。它解决了我在原始问题中给出的“angelo debarre”示例,但其他情况继续给我带来麻烦。请改用NFKC规范化表单(
-(NSString*)precomposedStringWithCompatibilityMapping
)。你能再举一个例子吗?太好了,那一个奏效了!请更新你的答案,我会接受的。谢谢@darvids0n,
compatibilityMapping分解的字符串做什么?我不明白。@IulianOnofrei请从一开始就尽可能多地阅读本文档:如果语言显得太过技术化,那么您可能不想使用此函数,因为您无法理解它的确切功能,最好使用字符串
compare:
方法。您引用的特定函数相当于该文档中的规范化表单KD。
precomposed…
版本是标准化表单KC。感谢您告诉我我做错了什么,而不是建议实际的解决方案:PSorry,先生。请在此处查看此空白规范化方法: