如何将字符串分成两部分

时间:2011-05-09 15:28:00

标签: iphone nsstring

我正在从我的plist中解析一个字符串并尝试将其分成两部分,以便根据中断将它们显示为两行或三行。

NSArray * parts = [text componentsSeparatedByString:@"\n"]; // this text is coming from plist.
int nthLine = 0;
for(NSString *str in parts)
{

CGRect outerFrame = CGRectMake(frame1.origin.x, frame1.origin.y + 45*nthLine, frame1.size.width, 45);

SFNDoorStyledView * question = [[SFNDoorStyledView alloc]initWithFrame:outerFrame];
question.backgroundColor = [UIColor clearColor];
question.tag = 2;
[question drawString:text inRect:CGRectMake(0,0,500,150) usingFontNamed:@"Futura-Bold" size:40.0 lineSpacing:40.0 kernValue:-3.0 color:@"#7d7066"];
[self.view addSubview:question];
}
nthLine = nthLine +1;

4 个答案:

答案 0 :(得分:3)

请注意在不同情境中的含义。

在此背景下

NSArray * parts = [text componentsSeparatedByString:@"\n"];

\ n被解释为换行符。

在你的plist中\ n将是实际的字符\和n

您可以使用option-enter将换行符添加到plist中,然后使用上面的代码或更好的代码:

NSArray * parts = [text componentsSeparatedByCharactersInSet:[NSCharacterSet newlineCharacterSet]];

或者,如果您想使用此自定义'\ n'分隔符,您可以使用

NSArray * parts = [text componentsSeparatedByString:@"\\n"];

答案 1 :(得分:0)

考虑使用UILabel来保存您的文本,您可以根据字符串本身动态调整大小。无需在字符串中包含\n。只需将标签大小/约束到您需要的宽度,然后根据字体和字体大小等其他属性为您计算高度。这是一个代表性片段。

// Size the label based on the font and actual text
UILabel *l = [[[UILabel alloc] initWithFrame:CGRectMake(10, 5, 300, 50)] autorelease];
l.font = [UIFont boldSystemFontOfSize:14.0];
l.lineBreakMode = UILineBreakModeWordWrap;
l.textAlignment = UITextAlignmentCenter;
l.numberOfLines = 0; // Allow for as many lines as needed
l.backgroundColor = [UIColor clearColor];
CGSize constraintSize = CGSizeMake(300, MAXFLOAT);
CGSize labelSize = [l.text sizeWithFont:l.font 
       constrainedToSize:constraintSize 
       lineBreakMode:UILineBreakModeWordWrap];
CGRect frame = l.frame;
frame.size = labelSize;
// Center it
frame.origin.x = floor((320.0 - labelSize.width) / 2.0);
l.frame = frame;

[v addSubview:l];

答案 2 :(得分:0)

检查行分隔符是否实际为\n。它也可能是\r。因此,使用componentsSeparatedByString:@"\r\n"可能会有所帮助。

答案 3 :(得分:0)

实际上plist会将您的字符串保存为文本。因此,如果您输入\ n它将其作为文本而不是换行符。尽管这样做我只打破了plist中的字符串。例如:如果你有一个字符串,你每月的当前收入是多少?而你想要从收入中打破它。然后你可以写下什么是你的,然后按alt + enter并在新行中输入文字。