如何使用NSString复制具有换行符的句子?

时间:2014-04-25 21:20:15

标签: ios objective-c uiwebview nsstring uilabel

我用UIWebViews替换了一些旧的UILabels,我意识到我的字符串如下所示:

NSString * eaten = YOU ATE <b>%@</b> FROM %.

以下列方式调用此句:

NSString *warning = [NSString stringWithFormat:eaten, "CAKE", "JANINE"];

显示为:

YOU ATE
CAKE
FROM JANINE.

我希望它显示的方式。我现在如何为NSString添加换行符?

我已尝试过以下内容,但它们都无效:

NSString *warning = [NSString stringWithFormat:@"%@\r%@\r%@",eaten, "CAKE", "JANINE"];
NSString *warning = [NSString stringWithFormat:@"%@\n%@\n%@",eaten, "CAKE", "JANINE"];
NSString *warning = [NSString stringWithFormat:@"%@\r\n%@\r\n%@",eaten, "CAKE", "JANINE"];

self.warningLabel.numberOfLines = 0;

但输出结果如下:

You sent %@ to %@.

我在这做什么?

3 个答案:

答案 0 :(得分:1)

您需要直接更改eaten字符串(最简单,最干净)或在中间字符串周围添加换行符

NSString *warning = [NSString stringWithFormat:eaten, @"\nCAKE\n", @"JANINE"];

如果它是变量,您需要使用[NSString stringWithFormat:@"\n%@\n", middleVar]来构建它。

无论哪种方式,从类似的变量中获取格式都是一个坏主意。直接使用文字,以便编译器可以为您检查参数编号和类型。

答案 1 :(得分:0)

使用backslashes \n代替转发slashes /n

NSString *warning = [NSString stringWithFormat:@"%@\n%@\n%@",eaten, "CAKE", "JANINE"];

<强>更新

哦,你有两个格式字符串。这不好。

NSString *eaten2 = @"YOU ATE\n%@\nFROM %@.";
NSString *warning = [NSString stringWithFormat:eaten2, "CAKE", "JANINE"];

不要忘记让标签的高度足够高,以便将三条线设置为numberOfLines为0。

答案 2 :(得分:0)

试试这个:

[NSString stringWithFormat:@"YOU ATE\n%@\nFROM %@.", "CAKE", "JANINE"];

如果您想重复使用格式:

NSString *eaten = @"YOU ATE\n%@\nFROM %@.";
[NSString stringWithFormat:eaten, "CAKE", "JANINE"];