2012-03-14 73 views
0

我目前正在獲取包含許多新行字符的Webservice響應。我嘗試了以下方法,但仍然無法消除換行符。如何在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'字符的部分去除低谷白色空間的過程?一些服務將返回'\ n \ r'('CR' +'LF'的組合)。另外一種方法是首先確保'''和''''的最後保證,然後處理它們之間的數據。 – 2012-03-14 12:57:50

+0

你可以幫我找到如何做到這一點? – 2012-03-15 04:58:12

+0

我已在 – 2012-03-15 10:35:07

回答

1

看起來你可以通過從第一次出現'{'到最後一次出現'}'的字符串來簡化你的問題。

下面的代碼通過不同的方法確保您想要的結果。爲什麼去,如果你說你只需要「從{"MESSAGE":"","CODE":1,直到end.`」

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

以下代碼添加了答案在這段代碼中,我們是否消除了新行字符和空格的出現? – 2012-03-15 12:19:37

+0

@PradeepReddyKypa:我們不這樣做,因爲如果你在第一個{和最後一個}之間切出字符串,看起來沒有(從你的例子)。嘗試一下,看看你是否得到了預期的結果。 – 2012-03-15 12:21:22

+0

@PradeepReddyKypa:你有沒有試過這種方法? – 2012-03-17 14:32:49