这就是我正在使用的:
如果地址,城市,邮编......长度> 0。(这些字段可能在将来增长)
self.addressInfoLbl.text = [NSString stringWithFormat:@"%@\n%@\n%@\n%@\n%@", address, city, zip, state, country];(numberofline == 0)
但如果其中任何一个长度= 0,那么我就得到了不必要的新行。 我正在努力手动准备(附加\ n)。如果有越来越多的字段然后这样做manuallt真的很难。 还有其他正确的方法。我做得对。
由于
答案 0 :(得分:6)
尝试以下代码。它创建字符串数组,删除空字符串,然后将它们与componentsJoinedByString
:
NSArray *strings = @[address, city, zip, state, country];
strings = [strings filteredArrayUsingPredicate:[NSPredicate predicateWithFormat:@"length > 0"]];
NSString *resultString = [strings componentsJoinedByString:@"\n"];
答案 1 :(得分:1)
您可以使用分隔符将对象数组连接到字符串中:
NSArray *props = [NSArray arrayWithObjects: address, city, state, nil];
NSString *joinedString = [props componentsJoinedByString:@"\n"];
你会得到:
"6th avenue\nAtlanta\nGeorgia"
如果您不知道属性数量,请使用NSMutableArray
代替NSArray
并在运行时添加属性。
答案 2 :(得分:0)
尝试此代码,它不是最佳的,但它可以解决您的问题
NSArray *arr = [NSArray arrayWithObjects: @"address", @"", @"state", nil];
NSString *addressInfo = @"";
for (NSString *str in arr) {
if (str.length > 0) {
addressInfo = [addressInfo stringByAppendingString:[NSString stringWithFormat:@"\n%@", str]];
}
}
if (addressInfo && ![@"" isEqualToString:addressInfo])
addressInfo = [addressInfo substringFromIndex:1];
NSLog(@"address Info = %@", addressInfo);
答案 3 :(得分:0)
尝试一次,
NSMutableString *joinedString=[NSMutableString string];
NSArray *arr = [NSArray arrayWithObjects: address, city, state, nil];
for(NSString *str in arr)
{
if([str length]>0) [joinedString appendFormat:@"\n%@", str];
}
NSString *resultString=[joinedString stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]];
NSLog(@"%@", resultString);
答案 4 :(得分:0)
Lbl.numberOfLines=0;
Lbl.lineBreakMode=NSLineBreakByCharWrapping;