9

通过复制/粘贴,我的一个客户在我的 IOS 应用程序的文本字段中输入了一个包含零宽度空间 [E2 80 8B] 的文本,我想删除它们。

这是一个文本示例: basse ​température ​avec ​dégivrage ​électrique

我尝试了什么:

NSString* zarb = [NSString stringWithFormat:@"%c%c%c",0xE2,0x80,0x8B];
NSString*resu=[ch stringByReplacingOccurrencesOfString:zarb withString:@""];
// does not work

if ([ch rangeOfString:zarb].location != NSNotFound) {
      // does not work
}

六进制序列在字符串中,但我无法删除它。有人已经遇到这个问题了吗?

4

1 回答 1

13

“零宽度空间”是 Unicode 字符\U200B。是E2 80 8BUTF-8 编码。

尝试这个:

NSString* zarb = @"\u200B";
NSString* resu = [ch stringByReplacingOccurrencesOfString:zarb withString:@""];

顺便说一句-您尝试做的事情:

NSString* zarb = [NSString stringWithFormat:@"%c%c%c",0xE2,0x80,0x8B];

80导致无效字符串,因为和没有 Unicode 字符8B

于 2013-05-13T20:02:53.860 回答