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!

有任何想法吗?

4

2 回答 2

1

在 GoZoner 的帮助下,我发现这是我需要的代码:

NSString *body = [message bodyPreferringPlainText:&isPlain];
    body = [[body componentsSeparatedByCharactersInSet:
             [NSCharacterSet whitespaceAndNewlineCharacterSet]]
            componentsJoinedByString:@" "];
    body = [body stringByReplacingOccurrencesOfString:@"  " withString:@" "];
于 2013-04-24T11:52:07.533 回答
0

我会建议一种稍微不同的方法。通过“空白”拆分字符串,然后重建字符串。像这样:

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'''.

于 2013-04-23T23:28:55.270 回答