2013-04-23 65 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'替换为''即可。