0

我是一个UITextView我试图找到@角色的地方。文本视图可能有多个@s,所以我想知道,我怎样才能找到第 n 个@字符?

目前,我有:NSRange range = [textViewText rangeOfCharacterFromSet:[NSCharacterSet characterSetWithCharactersInString:@"@"]];。这只找到第一个@实例。我怎样才能找到后续的?

4

3 回答 3

0

你可以尝试做一些事情,比如根据拆分文本@"@",然后你知道组件在哪里被拆分,那就是@应该出现的地方。这样你就可以轻松找到nth @

于 2012-08-13T18:00:40.963 回答
-1

找到第 n 个后,您想做什么@

这是一些勾画解决方案的示例代码。未编译或检查错误!

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 回答
-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 应用程序,您可以在其中测试您的 RegEx 实际文本。

于 2012-08-13T18:00:47.697 回答