0

NSString がある場合、次のようになります。

2-13-2014 Norway vs Canada Per 1 20-00 2

解析中で、日付が変更されます

どのように私はそれを変えるのですか

Norway vs Canada Per 1

つまり、日付と余分な文字を最後に削除します。

私は使用しました:

NSArray * dateComponents = [cleanString
                            componentsSeparatedByCharactersInSet:
                            [NSCharacterSet
                             characterSetWithCharactersInString:@"-"]];

cleanString = [NSString stringWithFormat:@"%@", [dateComponents objectAtIndex:2]]; 

出力:

2014 Norway vs Canada Per 1 20

ありがとう

4

2 に答える 2

1

スペースで分割します。次に、最初のコンポーネントと最後の 2 つのコンポーネントをドロップします。

NSString *input = @"2-13-2014 Norway vs Canada Per 1 20-00 2";

NSArray *words = [input componentsSeparatedByString:@" "];
words = [words subarrayWithRange:NSMakeRange(1, words.count - 3)];
NSString *output = [words componentsJoinedByString:@" "];
于 2014-08-21T20:18:42.290 に答える
0

フォーマットが一貫して特定のフォーマットである場合は、正規表現を使用できます。たとえば、フォーマットが常に次の場合:

dd-dd-dddd xxxxxxxxxxxxxxxxx dd-dd d

したがってNorway vs Canada Per 1、例から(つまり、xxxxxxxxxxxxxxxxx上記の)だけが必要な場合は、次のことができます。

NSError *error;
NSRegularExpression *regex = [NSRegularExpression regularExpressionWithPattern:@"^\\s*\\d{1,2}-\\d{1,2}-\\d{2,4}\\s+(.+)\\s+\\d{1,2}-\\d{1,2}\\s*\\d\\s*$" options:0 error:&error];

NSTextCheckingResult *result = [regex firstMatchInString:string options:0 range:NSMakeRange(0, [string length])];
if (result) {
    NSRange range = [result rangeAtIndex:1];             // find the NSRange for the stuff in the parentheses
    NSString *found = [string substringWithRange:range]; // get the string for that range
    NSLog(@"found = '%@'", found);
}

正規表現を解読するのに助けが必要な場合は、NSRegularExpressionドキュメントを参照してください。

于 2014-08-21T21:06:47.920 に答える