1

Webサイトから抽出されたテキストがすでに含まれているテキストビューがあります。したがって、テキストビューのテキストに次のテキストがあるとします。

Save Location 

84°F 

Clear 

Feels like 90°F

このテキストで、「84°F」で84と書かれているテキストを文字列に抽出するにはどうすればよいですか?84はウェブサイトから絶えず変化する変数であるため、異なる番号になることがあり、その番号を直接検索できないことを忘れないでください。これを行う方法を知っているなら、私に知らせてください:)お時間をいただきありがとうございます。

4

1 に答える 1

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] <200

上記のifステートメントに変換すると、次のようになります。

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

ウェブサイトのテキストでは、「82」の前の数字は5桁の郵便番号だけのように見えます。実際には、(地球上の)すべての温度は200(3桁)未満であるため、追加の行を入力すると、最終的な温度が5桁の郵便番号ではなく3桁以下になるようになります。

お役に立てれば!

于 2012-07-16T04:41:08.977 に答える