0
NSString *mainString =
@"COLOUMN1:Shaddy Van Dust COLOUMN2:245876 COLOUMN3:Info 3\nCOLOUMN1:Da Dirk COLOUMN2:45678 COLOUMN3:xcode\n";

これは、解析したいNSStringの例です。私の実際の文字列は約31行です。各情報には、「ShadyVanDust」の前と同じように接頭辞「COLOUMNx」が付いています。(COLOUMN1、COLOUMN2、およびCOLOUMN3の場合は常にですが、その後の各情報は毎回異なり、長さが異なります。)各行は「\n」で終わります。文字列の最後のトークンは'\n'です。('\ 0'は別として)(これが簡単であれば、各行と私の文字列がどのトークンで終わるかは一般的に重要ではありません。)

ここで、COLOUMN1、COLOUMN2、およびCOLOUMN3の間の各情報を一時文字列にコピーして、処理します。文字列の終わりに達するまで繰り返したいと思います。

rangeOfStringのようなメソッドをすでに試しましたが、COLOUMN1、* 2、および*3が各行に存在します-同じ文字列内。

私は何をしなければなりませんか?..

4

3 に答える 3

0

あなたは使用してみることができます:

NSMutableArray *arrayOfStrings = [mainString componentsSeparatedByString:@"\n"];

これにより、次のようなNSStrings配列が得られます。

0-> COLOUMN1:Shaddy Van Dust COLOUMN2:245876 COLOUMN3:Info 3

1-> COLOUMN1:Da Dirk COLOUMN2:45678 COLOUMN3:xcode

2-> [...]

配列にはNSStringが含まれており、。でアクセスできます[arrayOfStrings objectAtIndex:index];

それで何ができるかはよくわかりませんが、必要な個別の文字列を使用できるようになっていると思います...

それが役に立てば幸い !

編集 :

あなたはそれをさらに進めることができます。アレイを通過するループを開始します。

インデックスの文字列を取得しますi

NSString *stringToEdit = [arrayOfStrings objectAtIndex: i];

文字列を別の配列に分割します:

NSMutableArray *arrayOfLine = [stringToEdit componentsSeparatedByString:@"COLOUMN"];

これで新しい配列ができました:

[@ ""、@ "1:Shaddy Van Dust"、@ "2:245876"、@ "3:Info 3"]

分割する文字列は区切り文字で始まり、2番目と3番目の文字列の最後にスペースがあるため、最初の空の文字列に注意してください。

ここで、この配列に再度アクセスすると、文字列を操作できるようになります。

幸運を !

于 2012-09-13T11:35:51.833 に答える
0

これはどう?

NSString *mainString =
    @"COLOUMN1:Shaddy Van Dust COLOUMN2:245876 COLOUMN3:Info 3\nCOLOUMN1:Da Dirk COLOUMN2:45678 COLOUMN3:xcode\n";

    NSArray *strArray = [mainString componentsSeparatedByString:@"COLOUMN"];
    NSMutableDictionary *stringDictionary = [[NSMutableDictionary alloc] init];
    NSInteger idx = 1;

    for (NSString *thisString in strArray) {
        if ([thisString length] > 2) {
            NSString *trimmedString = [thisString substringFromIndex:2];
            [stringDictionary setValue:[trimmedString stringByReplacingOccurrencesOfString:@"\n" withString:@""]
                                forKey:[NSString stringWithFormat:@"String%d",idx]];
            idx++;

        }
    }

    NSLog(@"stringDictionary = %@", [stringDictionary description]);

出力:

2012-09-13 07:16:02.064 SO String Parsing[21203:f803] stringDictionary = {
    String1 = "Shaddy Van Dust ";
    String2 = "245876 ";
    String3 = "Info 3";
    String4 = "Da Dirk ";
    String5 = "45678 ";
    String6 = xcode;
}
于 2012-09-13T12:17:02.240 に答える
0

を使用しcomponentsSeparatedByString:ます。簡単な方法を説明します(これを行うより良い方法があるかもしれません):

まず、文字列を次のように行の配列に分割します。

NSArray* rowStrings = [mainString componentsSeparatedByString:@"\n"];

次に、それを使用してデータを次のように列に分割します。

NSArray* columnStrings = [[rowStrings objectAtIndex:i] componentsSeparatedByString:@" COLOUMN"];

:次のようにもう一度削除する必要がありますNSString* columnData = [[columnStrings componentsSeparatedByString:@":"] objectAtIndex:1];

于 2012-09-13T11:38:17.177 に答える