在NSString中搜索方括号

时间:2011-08-07 16:00:47

标签: ios objective-c

我有一些文本加载到NSString对象中,其中包含方括号中的注释 - 我需要删除方括号及其中的所有内容,以便仅向用户显示正文。

但是,由于Objective-C依赖于方括号用于消息传递等...,我在移除它们时遇到了一些问题。

使用方括号是否有一些特殊的转义字符(例如作为'rangeOfString:'的参数)? Xcode反复通知我没有。

干杯

3 个答案:

答案 0 :(得分:3)

您可以使用正则表达式删除所需的子字符串:

NSString *s = @"hi[bla]tototo[lalA123]a";
NSString *result = [s stringByReplacingOccurrencesOfString:@"\\[[\\w]+\\]" 
                                                withString:@""
                                                   options:NSRegularExpressionSearch|NSCaseInsensitiveSearch
                                                     range:NSMakeRange(0, [s length])];
NSLog(@"%@", result);
// output "hitototoa"

P.S。如果注释可能包含与'\ w'说明符不匹配的字符,则可能需要调整正则表达式模式

答案 1 :(得分:1)

您的意思是@"["@"]"

Objective-C中的任何字符串必须介于@""之间。

答案 2 :(得分:0)

我认为弗拉基米尔基于正则表达式的答案很好,但我想解决使用rangeOfString的问题,因为OP听起来很混乱。在NSStrings中使用方括号没有问题,这与Objective C使用方括号进行消息传递无关。

这对我来说很好用:

SomeClass sc1 = new SomeClass();
SomeClass sc2 = (SomeClass)sc1.clone();