以下のような文字列があります。
<br><br><br><br><br> SomeHtmlString <br><br><br><br><br>
SomeHtmlStringの中間のbrタグを保持するtrim関数のようなbrタグを削除したいと思います。これをすぐに行う機能はありますか?
例えば
<br><br><br>test1<br><br>test2<br><br><br><br>
に
test1<br><br>test2
以下のような文字列があります。
<br><br><br><br><br> SomeHtmlString <br><br><br><br><br>
SomeHtmlStringの中間のbrタグを保持するtrim関数のようなbrタグを削除したいと思います。これをすぐに行う機能はありますか?
例えば
<br><br><br>test1<br><br>test2<br><br><br><br>
に
test1<br><br>test2
正規表現を使った方法です。一度に1 つだけ一致
し、文字列の先頭または末尾のいずれかに置き換えます。
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:@""];
これはループを回避しますが、変更が少し難しくなります。
あなたはこれを行うことができます:
NSString* htmlString= @"<br><br><br><br><br> SomeHtmlString <br><br><br><br><br>";
NSString* pureString= [htmlString stringByReplacingOccurrencesOfString: @"<br>" withString: @""];
したがって、pureString に @" SomeHtmlString " が含まれます。
これを使用して、不要なビットを取り除くことができます。
[yourString stringByReplacingOccurrencesOfString:@"<br>" withString:@""];
次に、次のようなものを使用して、文字列を希望どおりに再作成します。
NSString *newString = [NSString stringWithFormat:@"<br>%@<br>", yourString];
stringByTrimmingCharactersInSet も参照してください。
NSString でできることはたくさんあります。クラス リファレンスを確認してください: https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSString_Class/Reference/NSString.html
編集:
substringToIndex: ここであなたの友達になることができます. これを行うと、文字列の最初の 4 文字が削除したい文字で構成されているかどうかを確認できます。
NSString *subString = [yourString substringToIndex:4];
if ([subString isEqualToString:@"<br>"]) {
yourString = [yourString substringFromIndex:4];
}
次に、これらの 4 文字を含まない新しい文字列を作成しています。最初の 4 文字が削除したい文字と等しくなくなるまで、これを続けます。
substringFromIndex を使用して、文字列の最後で同様のことを行うことができます。部分文字列が範囲外にならないように、元の文字列の長さを知る必要があります。
代替の正規表現の表現:
NSString *input = @"<br><br><br><br><br><br>test<br>test2<br><br><br><br><br><br><br><br><br><br>";
__block NSString *output;
NSError *error;
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"^(<br>)*(.*?)(<br>)*$"
options:NSRegularExpressionCaseInsensitive
error:&error];
[regex enumerateMatchesInString:input
options:0
range:NSMakeRange(0, [input length])
usingBlock:^(NSTextCheckingResult *result, NSMatchingFlags flags, BOOL *stop) {
NSRange matchRange = [result rangeAtIndex:2];
output = [input substringWithRange:matchRange];
}];
if (output)
NSLog(@"Found: %@", output);