2

##$$で囲まれた部分文字列を検索するための最良の方法は何ですか。たとえば、次のようなテキストがあります。

Lorem ## ipsum $$ dolor sit amet、## consectetur $$ adipisicing elit、sed do eiusmod tempor incididunt ut Labore et doloremagnaaliqua。Ut enim ad minim veniam、quis nostrud exercitation ullamco Laboris nisi ut aliquip ex eacommodoconsequat。

ipsumconsecteturという単語を取得したいと思います。NSString rangeofsubstringメソッドを実行できることは知っていますが、これを実行するためのより良い方法はありますか?基本的に、他の2つの文字列で囲まれた文字列を見つけますか?ありがとう

4

2 に答える 2

3

NSRegularExpression(警告:iOS4 +のみ)を使用して、正規表現パターン(@"##.*$$"通常のように)を使用してサブストリングを一致させることができます。

そうすれば、結果の一致を繰り返すのは本当に簡単です(iOS4ではないので、私の好みの方法は列挙ブロックを使用することです:-)):

NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"##(.*)$$" options:NSRegularExpressionCaseInsensitive error:nil];
[regex enumerateMatchesInString:yourString options:0 range:NSMakeRange(0, [yourString length]) usingBlock:
    ^(NSTextCheckingResult *match, NSMatchingFlags flags, BOOL *stop) {
        NSRange range = [match rangeAtIndex:1]; // range of string in first parens
        NSString* oneWord = [yourString substringWithRange:range];
    }
];

注:iOS4より前のバージョンをサポートする必要がある場合は、確認できますが、NSPredicate柔軟性ははるかに低くなります(iOS4より前の場合、NSPredicateは、文字列は一致していますが、部分文字列を取得できません...)

于 2011-06-29T19:19:54.113 に答える
0

「##」を検索し、その後、最も近い「$$」を検索して、文字列文字を反復処理します。

于 2011-06-29T19:08:02.627 に答える