0

私はキャラクターUITextViewを見つけようとしているところです。@テキストビューには複数の が含まれている可能性があるため、n 番目の文字@を見つけるにはどうすればよいでしょうか?@

現在、私は持っています: NSRange range = [textViewText rangeOfCharacterFromSet:[NSCharacterSet characterSetWithCharactersInString:@"@"]];. @これは最初のインスタンスのみを検索します。後続のものを見つけるにはどうすればよいですか?

4

3 に答える 3

0

に基づいてテキストを分割するようなことを試してみると@"@"、コンポーネントが分割されている場所がわかり、そこに@が表示されます。このようにして、簡単に見つけることができますnth @

于 2012-08-13T18:00:40.963 に答える
-1

あなたの質問が正しく理解できれば、正規表現で問題が解決します。RegEx には多少の学習曲線がありますが、非常に便利です。

http://www.regular-expressions.info/ は、一般的な正規表現の出発点として非常に適しています。

http://remarkablepixels.com/blog/2011/1/13/regular-expressions-on-ios-nsregularexpression.html iOS での正規表現に関するチュートリアル

http://reggyapp.com/ Reggy は、実際のテキストで正規表現をテストできる osx アプリです。

于 2012-08-13T18:00:47.697 に答える
-1

nth を見つけたら、何をしたいです@か?

ソリューションをスケッチするサンプル コードを次に示します。コンパイルもバグチェックもされていません!

int targetItem = 3; // we find the 3rd item 

NSString *workingStr = @"your@string@containing@stuff";

int foundAtLocation = -1;
for (int idx = 0; idx < targetItem; idx++) {
    NSRange range = [workingStr rangeOfCharacterFromSet:[NSCharacterSet characterSetWithCharactersInString:@"@"]];
    if (range.location < 0) {
        // not found, give up
        foundAtLocation = -1;
        break;
    }
    workingStr = [workingStr substringFromIndex:range.location];
    foundAtLocation += range.location;
}
if (foundAtLocation >= 0) {
    NSLog(@" I found the %d occurence of @ at character index %d", targetItem, foundAtLocation);
}
else {
    NSLog(@" Not found");
}
于 2012-08-13T18:21:17.803 に答える