0

私はフォームの NSString オブジェクトを持っています

"this is [i]1[/i] and that is [i]2[/i] and there we have [i]3[/i], and so on"

[i]1[/i] は、どこかにある画像番号 1 への参照です。正規表現の一致と置換を使用して、次の出力を取得したいと考えています。

"this is <img src="root/1.png"> and that is <img src="root/2.png"> and there we have <img src="root/3.png">, and so on"

クラスを使用してNSRegularExpressionいますが、正規表現の構築が間違っていると思います。助けてください。

4

1 に答える 1

0

ブラケットを適切にエスケープするのを忘れている可能性があります。それらを2 回エスケープする必要があります。単一のバックスラッシュは、Objective-C コンパイラによって文字列エスケープ文字として解釈されます。正規表現パターンにバックスラッシュを挿入するには、それをエスケープする必要が[あります。つまり、一致させるには、 \\[.

NSString *string = @"this is [i]1[/i] and that is [i]2[/i] and there we have [i]3[/i], and so on";
NSString *pattern = @"\\[i\\]([0-9]+)\\[/i\\]";
NSString *replacement = @"<img src=\"root/$1.png\">";
NSRegularExpression *regexp = [NSRegularExpression regularExpressionWithPattern:pattern 
                               options:0 error:nil];
NSString *replaced = [regexp stringByReplacingMatchesInString:string 
                                           options:0 
                                             range:NSMakeRange(0, string.length) 
                                      withTemplate:replacement];
于 2013-05-16T11:54:10.717 に答える