在UITextView中查找字符的多个数字

时间:2012-08-13 17:55:28

标签: iphone objective-c ios nsstring uitextview

我是UITextView,我正在尝试找到@字符。文本视图可能有多个@,所以我想知道,如何找到第n个@字符?

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

3 个答案:

答案 0 :(得分:0)

您可以尝试执行类似于基于@"@"拆分文本的操作,然后您知道组件的拆分位置,@应该出现的位置。这样您就可以轻松找到nth @

答案 1 :(得分:-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实际文本。

答案 2 :(得分:-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");
}