2013-04-23 128 views
1

我正在使用以下代碼篩選換行符等,並用空格替換它們。然後,我使用另一條線來獲取雙倍空間,並將其替換爲只有一個空間,但它看起來仍然有雙倍空間。篩選出雙倍空間

我在做什麼錯?

NSString *body = [message bodyPreferringPlainText:&isPlain]; 
body = [body stringByReplacingOccurrencesOfString:@"\r" withString:@"\n"]; 
body = [body stringByReplacingOccurrencesOfString:@"\n" withString:@" "]; 
body = [body stringByReplacingOccurrencesOfString:@" " withString:@" "]; 

http://i.stack.imgur.com/yNX6O.png

編輯:我想我已經找到了我的問題,當消息被格式化,像這樣這只是發生:

Hello, 

How are you doing? 

Thanks! 

,但不是在這樣的:

Hello, 
How are you doing? 
Thanks! 

任何想法?

+0

是什麼字符串看起來像這個例子形象 – JeffN 2013-04-23 23:11:37

+0

請看看我的編輯。 – 2013-04-23 23:37:35

回答

1

我已經想通了,與GoZoner的幫助,這是我所需要的代碼:

NSString *body = [message bodyPreferringPlainText:&isPlain]; 
    body = [[body componentsSeparatedByCharactersInSet: 
      [NSCharacterSet whitespaceAndNewlineCharacterSet]] 
      componentsJoinedByString:@" "]; 
    body = [body stringByReplacingOccurrencesOfString:@" " withString:@" "]; 
1

我會建議一個稍微不同的方法。按'whitespace'拆分字符串,然後重新生成字符串。像這樣:

body = [[body componentsSeparatedByCharactersInSet: 
       [NSCharacterSet whitespaceCharacterSet]] 
      componentsJoinedByString: " "]; 

您遇到的具體問題如下。你開始於:

Hello, 

How are you doing? 

Thanks! 

作爲一個字符串是"Hello,\r\n\r\nHow are you doing?\r\n\r\nThanks"。然後,你一步一步地變換爲:

"Hello,\n\n\n\nHow are you doing?\n\n\n\nThanks"  #\r becomes \n 
    "Hello, How are you doing? Thanks"    #\n becomes ' ' (four of them) 
    "Hello, How are you doing? Thanks"     #' ' becomes ' ' (four become two) 

使用我的建議,這是最好的解決方案。如果您不喜歡,只需將'\r'替換爲''即可。