iPhone SDK:如何从textview中提取特定文本?

时间:2012-07-16 04:26:30

标签: iphone objective-c ios ios4 uitextview

我的文本视图已经从网站中提取了文本。所以,让我们说文本视图中的文本有这样的文字:

Save Location 

84°F 

Clear 

Feels like 90°F

在本文中,如何将“84°F”中84的文本提取为字符串?请记住,84是来自网站的不断变化的变量,所以有时它将是一个不同的数字,我不能直接搜索数字。如果你知道怎么做,请告诉我:)谢谢你的时间。

1 个答案:

答案 0 :(得分:3)

尝试这样的事情:

NSString *originalString = @"Save Location 84°F Clear Feels like 90°F";

NSMutableString *stringWithNums = [NSMutableString stringWithCapacity:originalString.length];

NSScanner *scanner = [NSScanner scannerWithString:originalString];
NSCharacterSet *numbers = [NSCharacterSet 
                       characterSetWithCharactersInString:@"0123456789"];

while ([scanner isAtEnd] == NO) {
    NSString *buffer;
    if ([scanner scanCharactersFromSet:numbers intoString:&buffer]) {
        [stringWithNums appendString:buffer];

    } else {
        [scanner setScanLocation:([scanner scanLocation] + 1)];
        [stringWithNums appendString:@" "];
    }
}

现在stringWithNums将包含以下内容:

  

84(某些空格)90

然后你可以像这样解析stringWithNums

NSArray *tempArray = [stringWithNums componentsSeparatedByString: @" "];
NSString *finalTemperature;

for(int index = 0; index < [tempArray count]; index++){

    if([[tempArray objectAtIndex:index] intValue] != 0 && [[tempArray objectAtIndex:index] intValue] < 200){
        finalTemperature = [tempArray objectAtIndex: index];
        break;
    }
}

finalTemperature将包含“84”。您可以将其放在方法表单中并传入originalString作为参数,以便您可以重用此代码。希望这会有所帮助,如果您有任何疑问,请务必在评论中提问!

更新: 我添加了这一行:     &安培;&安培; [[tempArray objectAtIndex:index] intValue]&lt; 200

到上面的if语句,所以它现在看起来像这样:

if([[tempArray objectAtIndex:index] intValue] != 0 && [[tempArray objectAtIndex:index] intValue] < 200){

在网站文字中,它看起来像“82”之前的唯一数字是一个5位数的邮政编码。实际上,所有温度(地球上)都低于200(3位数),因此我输入的额外线路确保最终温度为三位或更少的数字而不是5位数的邮政编码。

希望这有帮助!