2012-03-14 13 views
0

私は現在、多くの改行文字を含むWebサービス応答を取得しています。私は以下のアプローチを試みたが、私はまだ新しいラインの文字を排除することができません。webserviceレスポンスでNSStringから改行文字を削除するにはどうすればいいですか?

1)

responseString = [responseString stringByReplacingOccurrencesOfString:@"\n" withString:@""]; 

2)

responseString = [responseString stringByTrimmingCharactersInSet:[NSCharacterSet newlineCharacterSet]]; 

3)

NSRange foundRange = [responseString rangeOfString:@"\n"]; 
    if (foundRange.location != NSNotFound) 
     [responseString stringByReplacingOccurrencesOfString:@"\n" 
              withString:@"" 
               options:0 
               range:foundRange]; 

マイWebサービスrespsonseがこの形式です。

META NAME="ColdFusionMXEdition" CONTENT="ColdFusion DevNet Edition - Not for Production Use."?  


    wddxPacket version='1.0'><header/><data><string>{"MESSAGE":"","CODE":1,"RESPONSE":{"FILENAME":"CustomerSkillsIntro","PLAYLIST":[{"TIMEOUT":73,"TITLE":"Greet","QUESTIONNUMBER":1,"TIMEIN":71,"VALIDRESPONSE":1},{"TIMEOUT":77,"TITLE":"Have Name Tag","QUESTIONNUMBER":2,"TIMEIN":74,"VALIDRESPONSE":1},{"TIMEOUT":83,"TITLE":"Greet","QUESTIONNUMBER":3,"TIMEIN":78,"VALIDRESPONSE":1},{"TIMEOUT":112,"TITLE":"Helping Do My Job","QUESTIONNUMBER":4,"TIMEIN":109,"VALIDRESPONSE":1},{"TIMEOUT":134,"TITLE":"Greet Happily","QUESTIONNUMBER":5,"TIMEIN":131,"VALIDRESPONSE":1},{"TIMEOUT":144,"TITLE":"Stay cheerful when resident is crabby","QUESTIONNUMBER":6,"TIMEIN":141,"VALIDRESPONSE":1},{"TIMEOUT":154,"TITLE":"Bond with the new resident","QUESTIONNUMBER":7,"TIMEIN":151,"VALIDRESPONSE":1},................... 

私の要件は、文字列の一部だけを{"MESSAGE":"","CODE":1,から最後まで取り込むことです。しかし、必要な部分の前に空白と改行文字が多すぎます。

+0

あなたはまた、Webサービス応答の '\のr'文字を取得する可能性がある「end.'まで{"MESSAGE":"","CODE":1,から」一部だけを必要とすると言う場合は空白を除去する工程を谷に行きますか?いくつかのサービスは '\ n \ r'(' CR' + 'LF'の組み合わせ)を返します。また、 '{'と ''}の最後の保証の最初の保証を見つけて、それらの間のデータを処理する方法もあります。 –

+0

どうすればいいですか? –

+0

以下のコードで回答を追加しました –

答えて

1

最初の発生から'{'までの文字列を最後の出現数が'}'にすることで、問題を簡略化できるようです。

以下のコードは、異なるアプローチで必要な結果を保証します。なぜあなたは

NSRange start = [responseString rangeOfString:@"{"]; 
NSRange end = [responseString rangeOfString:@"}" options:NSBackwardsSearch]; 
NSString *result = nil; 

if ((start.location != NSNotFound)&&(start.location != NSNotFound)) 
{ 
    NSRange resultRange = NSMakeRange(start.location,end.location - start.location + 1); 
    result = [responseString substringWithRange: resultRange]; 
    NSLog (@"returning with result: %@", result); 
} 
else 
{ 
    NSLog (@"abort mission"); 
} 
+0

このコードでは、改行文字と空白文字が削除されていますか? –

+0

@PradeepReddyKypa:最初の{と最後の}の間に文字列を切り抜くと、(あなたの例から)見えないので、私たちはしません。それを試して、望みの結果が得られたかどうかを確認してください。 –

+0

@PradeepReddyKypa:この方法を試しましたか? –

関連する問題