我有一个像下面这样的字符串。
<br><br><br><br><br> SomeHtmlString <br><br><br><br><br>
我想删除Some标签中保留修整功能的br标签,例如在SomeHtmlString中保留中间的br标签。
短期内有什么功能吗?
例如
<br><br><br>test1<br><br>test2<br><br><br><br>
至
test1<br><br>test2
最佳答案
这是使用正则表达式的方法。它一次只匹配一个,并在字符串末尾的开头替换它。
NSMutableString *replaceMe = [[NSMutableString alloc ]
initWithString:@"<br><br > <br > test<br>test2<br><br>"];
NSError *error = NULL;
NSRegularExpression *regex = [NSRegularExpression
regularExpressionWithPattern:@"^ *<br *> *"
options:NSRegularExpressionCaseInsensitive
error:&error];
do {
;
} while ([regex replaceMatchesInString:replaceMe options:NSMatchingCompleted range:NSMakeRange(0, replaceMe.length) withTemplate:@""] != 0);
regex = [NSRegularExpression
regularExpressionWithPattern:@" *<br *> *$"
options:NSRegularExpressionCaseInsensitive
error:&error];
do {
;
} while ([regex replaceMatchesInString:replaceMe options:NSMatchingCompleted range:NSMakeRange(0, replaceMe.length) withTemplate:@""] != 0);
NSLog(@"string=%@", replaceMe);
并且确实将
"<br><br > <br > test<br>test2<br><br>"
剥离为test<br>test2
。这可能不是最巧妙的解决方案,但是很容易修改以匹配具有不同空格的不同表达式。
也可以使用正则表达式一次性匹配多个
<br>
:NSRegularExpression *regex = [NSRegularExpression
regularExpressionWithPattern:@"^ *(<br *> *)+"
options:NSRegularExpressionCaseInsensitive
error:&error];
[regex replaceMatchesInString:replaceMe options:NSMatchingCompleted range:NSMakeRange(0, replaceMe.length) withTemplate:@""];
NSRegularExpression *regex = [NSRegularExpression
regularExpressionWithPattern:@" *(<br *> *)+$"
options:NSRegularExpressionCaseInsensitive
error:&error];
[regex replaceMatchesInString:replaceMe options:NSMatchingCompleted range:NSMakeRange(0, replaceMe.length) withTemplate:@""];
这样可以避免循环,但是很难修改。
关于objective-c - 某些关键字的字符串修剪,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13802972/