为什么我的字符串长度总是显示为iphone中的长度2?

时间:2013-03-27 14:40:40

标签: iphone ios ipad

我有一个应用程序,其中我想显示字符串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]; 

`有人可以帮助我吗?

5 个答案:

答案 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];

}