我在SO上尝试(搜索)各种可能的解决方案,徒劳无功。他们中的大多数只是简单地替换所有出现的反斜杠,并且不尊重原本应该不受影响的反斜杠。
例如,如果我有一个嗨,那就是我。你怎么样?,它应该是嗨,这是我。你好吗?。但是,如果有人试图通过ASCII艺术创作,比如
\\ // \\ // \\ //
// \\ // \\ // \\
(甚至SO也不会让我按原样添加文字,上面的文字需要额外的反斜杠才能正确显示。)
我无法使用[myString stringByReplacingOccurrencesOfString:@"\\" withString:@""];
,因为它会替换所有反斜杠。我不希望这样。
我希望字符串按原样显示。
注意:此处讨论的字符串是NSDictionary
中从Web服务收到的JSON值。该用途是在聊天客户端之类的服务中,因此正确处理文本非常重要。
ULTRA重要提示:只要完成工作,我就会接受所有想法,如图书馆功能,正则表达,人为牺牲。
答案 0 :(得分:1)
尝试这个...我无法理解你的问题,但它可能对你有帮助,我想是的
- (void)remove:(NSString*)str
{
NSString* const pattern = @"(\"[^\"]*\"|[^, ]+)";
NSRegularExpression *regex = [[NSRegularExpression alloc] initWithPattern:pattern
options:0
error:nil];
NSRange searchRange = NSMakeRange(0, [str length]);
NSArray *matches = [regex matchesInString:str
options:0
range:searchRange];
for (NSTextCheckingResult *match in matches) {
NSRange matchRange = [match range];
NSLog(@"%@", [str substringWithRange:matchRange]);
}
NSLog(@"%@",str);
}
调用此方法..
NSString* str = @"Hi, it\'s me. How\'re you doing?";
[self remove:str];
然后输出
Hi, it's me. How're you doing?