我有一个应用程序,其中我想显示字符串0..9作为秒和10个自己的字作为秒。我正在使用字符串长度来实现此目的,但它总是给我长度为2为偶数对于0..9或10个自己的词。自然它需要给出1和2,但我没有弄清楚为什么这个奇怪的行为,我正在采取像这样的字符串`
todaysdateString1= [NSString stringWithFormat:@"%2ld",seconds];
int myLength2 = [todaysdateString1 length];
NSString *subtitle;
NSLog(@"%@",todaysdateString1);
NSLog(@"%d",myLength2);
if(myLength2==2)
subtitle = [NSString stringWithString:@"second"];
else
subtitle = [NSString stringWithString:@"seconds"];
todaysdateString1 = [todaysdateString1 stringByAppendingFormat:@" %@",subtitle];
`有人可以帮助我吗?
答案 0 :(得分:1)
在第一行中,@“%2ld”强制字符串长度为2.您应该只使用@“%ld”或甚至@“%d”。
答案 1 :(得分:1)
查看第1行
todaysdateString1= [NSString stringWithFormat:@"%2ld",seconds];
这里你已经为你的字符串%2d设置了填充,这意味着如果你的字符串是一个字符,它将添加0作为前缀。所以删除它,替换它将在行
todaysdateString1= [NSString stringWithFormat:@"%ld",seconds];
答案 2 :(得分:1)
您发布的所有代码都应该是:
todaysdateString1 = [NSString stringWithFormat:@"%ld %@", seconds, seconds >= 10 ? @"seconds" : @"second"];
删除2
将解决问题,显示0到9并带有前导空格。
另外,为什么要检查字符串长度?检查seconds
的实际值。
最后,为什么要显示second
0到9?通常,您应该仅针对1显示second
,针对所有其他值显示seconds
。
答案 3 :(得分:0)
由于你在stringWithFormat中使用“d”,我会假设“秒”是一个int。
如果秒是一个int,只需检查秒,看它是否大于或小于等于9.然后根据你的选择:
todaysdateString1 = [NSString stringWithFormat:@"%2ld", seconds];
int myLength2 = [todaysdateString1 length];
NSString *subtitle;
NSLog(@"%@", todaysdateString1);
NSLog(@"%d", myLength2);
if (seconds <= 9)
subtitle = [NSString stringWithString:@"second"];
else
subtitle = [NSString stringWithString:@"seconds"];
todaysdateString1 = [todaysdateString1 stringByAppendingFormat:@" %@", subtitle];
根据单个简单整数做出决定可能更可靠。
答案 4 :(得分:0)
你可以这样做:
if( (seconds > 0) && (seconds < 10) ){
subtitle = [NSString stringWithString:@"second"];
}else{
subtitle = [NSString stringWithString:@"seconds"];
todaysdateString1 = [todaysdateString1 stringByAppendingFormat:@" %@",subtitle];
}