0

以下のような文字列としてWebサービスから応答を取得しています-

brand=company%%samsung@@modelnumber=webmodel%%GT1910@@Sim=Single%%SingleSim@@3g=yes%%Yes@@wifi=yes%%yes(2.1 mbps まで)

以下のように応答をフォーマットすることを混乱させています-

brand=samsung
modelnumber=GT1910
Sim=SingleSim
3g=Yes
wifi=(2.1 mbps upto)

特殊文字を削除しようとしました(@@ and %%)

specialString = [specialString stringByReplacingOccurrencesOfString:@"@@" withString:@"\n"];
specialString = [specialString stringByReplacingOccurrencesOfString:@"%%" withString:@"\n"];
specialString= [specialString stringByReplacingOccurrencesOfString:@" " withString:@""];

私の出力は -

brand=company
samsung
modelnumber=webmodel
GT1910
Sim=Single
SingleSim
3g=yes
Yes
wifi=yes
(2.1 mbps upto)

不要な単語を削除する方法。

4

3 に答える 3

4

元の文字列には不要な部分があるため、単純な検索と置換は使用できません。

テストされていませんが、これはおそらく機能します:

NSArray *parts = [specialstring componentsSeparatedByString:@"@@"];
NSMutableArray *result = [[NSMutableArray alloc] init];
for(NSString *piece in parts) {
    NSArray *pairs = [piece componentsSeparatedByString:@"="];
    if([pairs count] > 1) {
        NSString *key = [pairs objectAtIndex:0];
        NSString *values = [pairs objectAtIndex:1];
        NSArray *avalues = [values componentsSeparatedByString:@"%%"];
        [result addObject:[NSString stringWithFormat:@"%@=%@", key, [avalues lastObject]]];
    }
}

NSLog(@"%@", [result componentsJoinedByString:@"\n"]);
// [result release]; // Uncomment if ARC is turned off

最初に配列で分割し@@、配列を反復処理します。次に、によって分割し=て、左側 (インデックス 0) のキーを取得します。右側 (インデックス 1) を取り%%、最後の値で分割して使用します。

于 2012-11-20T05:28:35.603 に答える
1

以下のようにトリムすると機能します

NSString *strRes = @"brand=company%%samsung@@modelnumber=webmodel%%GT1910@@Sim=Single%%SingleSim@@3g=yes%%Yes@@wifi=yes%%yes(2.1 mbps upto)";
strRes = [strRes stringByReplacingOccurrencesOfString:@"=" withString:@"--"];
strRes = [strRes stringByReplacingOccurrencesOfString:@"@@" withString:@"\n"];
NSRange rangeForTrim;
while ((rangeForTrim = [strRes rangeOfString:@"--[^%%]+%%" options:NSRegularExpressionSearch]).location != NSNotFound)
    strRes = [strRes stringByReplacingCharactersInRange:rangeForTrim withString:@"="];

NSLog(@"%@",strRes);
于 2012-11-20T05:45:12.540 に答える
0

すぐにコードを書くことはできませんが、次のことを行う必要があります。

  • すべて%%(space)
  • すべて@@\n
  • =との間のすべての単語を削除します(space)
于 2012-11-20T05:21:26.963 に答える