我想替换字符串中的尖括号和空格。例如,@"< something >"
转到@"something"
。我正在尝试:
NSString *s1 = @"< something >";
NSString *s2 =
[s1 stringByReplacingOccurrencesOfString:@"[<> ]"
withString:@""
options:NSRegularExpressionSearch
range:NSMakeRange(0, s1.length)];
然而,我对正则表达式并不陌生,@"[<> ]"
似乎不起作用。用于删除尖括号和空格的正确正则表达式是什么?
答案 0 :(得分:2)
请注意NSRegularExpressionSearch
的文档:
您只能将此选项与rangeOfString:...方法一起使用。
所以即使你有正确的正则表达式,你也无法使用这种方法。
对于您描述的情况,使用包含'&lt;'字符集的-stringByTrimmingCharactersInSet:
可能会更容易和''。
更新:Joshua Weinberg指出,您要删除所有出现的字符'&lt;','&gt;'和''。如果是这种情况,您将需要查看NSRegularExpression的-stringByReplacingMatchesInString:options:range:withTemplate:
方法:
NSError *error = nil;
NSRegularExpression *re = [NSRegularExpression regularExpressionWithPattern:@"<> " options:0 error:&error];
NSString *s1 = @"< something >";
NSRange range = NSMakeRange(0, s1.length);
NSString *s2 = [re stringByReplacingMatchesInString:s1 options:0 range:range withTemplate:@""];
(我没有测试过,但它应该指向正确的方向。)
答案 1 :(得分:1)
以下是解决字符的解决方案:'<'
,'>'
,' '
NSCharacterSet*mySet = [NSCharacterSet characterSetWithCharactersInString:@"<> "];
NSString *s1 = @"< something >";
NSArray * components = [s1 componentsSeparatedByCharactersInSet:
mySet];
NSMutableString * formattedS1 = [NSMutableString string];
for (NSString * s in components) {
[formattedS1 appendString:s];
}
NSLog(@"formatted string %@", formattedS1);
您可以将以后需要的任何字符添加到第一行