0

次のような文字列があります。

"51403074 0001048713 1302130446 TOMTOM101注文51403074-3-278065518:ontvangen"

この文字列は、同様の文字列を含む配列からフィルタリングされます。この文字列には、いくつかの関連データといくつかの無関係なデータが含まれています。関連する文字列の唯一の部分は次のとおり1302130446です。この数値は、日付と時刻(yy / mm / dd / hh / mm)を表します。この部分は日付と時刻であるため、毎回同じではありません。

この文字列をフィルタリングして、関連する部分のみを含む文字列を作成するにはどうすればよいですか。

申し訳ありませんが、まだIOS開発を学んでいます。

4

3 に答える 3

4

日付文字列が常に3番目の単語になる場合は、NSStringを次のように単語配列に分割できます。

NSString *myString = @"This is a test";
NSArray *myWords = [myString componentsSeparatedByString:@" "];

次に、配列の3番目の項目にアクセスして、必要な文字列を取得します。

編集(コメントによる):単語配列から正しい文字列を確実に取得するには、文字列に一意の識別子が必要です。'TOMTOM101'は常に日付文字列または他の何かの後に続く可能性があります...

**編集2(サンプルコードが必要なため)

NSUInteger counter = 0;
NSUInteger dateStringIndex = 0;
for(NSString *str in myWords) {
    counter ++;
    if([str isEqualToString:@"TOMTOM101"]) {
        dateStringIndex = counter - 1;

        //We now know which word is the date number, so we can stop looping.
        break;
    }
}

(コンパイルされたコードではありません)

于 2013-02-14T21:08:14.437 に答える
0

元の文字列を1文字のスペースで区切るだけです。

NSString *whatever = @"51403074 0001048713 1302130446 TOMTOM101 Order 51403074-3-278065518: ontvangen"
NSString *mydatestring = [self NthString:whatever :@" " :2];

- (NSString *)NthString:(NSString *)source:(NSString *)part:(NSInteger)i {
if (i >= 0) {
    NSArray* components = [source componentsSeparatedByString:part];
    return [components objectAtIndex:i];
}
else {
    return @"";
}
}
于 2013-02-14T22:08:55.407 に答える
0

関連する文字列の長さは10文字のようです。

この関連する文字列の位置が元の文字列で固定されている場合(TOMTOMの直後に来る)、

その後、あなたはこのようなことをすることができます:-

元の文字列の長さを繰り返し処理し、='TOMTOM'であるブロックを探します

繰り返しながら、countのカウンター値を追加し、「スペース」に出会うたびに1ずつ更新します。つまり、最初の「スペース」に出会ったときに、カウンター値を追加します。たとえば、count = 1の場合、uが2番目のスペース、更新カウント= 2 ..など、

TOMTOMを見つけると、カウンターの値はたとえば= 4になります。したがって、日付文字列は、カウントが3に設定された後、カウントが4に設定される前に配置されていることがわかります。

count = 3 do:'元の文字列から関連する文字列'を抽出します。uが次の「スペース」に出くわしたとき、カウント= 4を更新し、元の文字列からの抽出を停止します。

于 2013-02-14T21:14:09.480 に答える