-2

我有一个应用程序,我想将字符串 0..9 显示为秒,将 10 个 ownwords 显示为秒。我采用字符串长度来实现此目的,但它总是给我长度为 2,即使是 0。 .9 或 10 个 ownwords.naturally 它需要给出 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]; 

‘有人能帮帮我吗?

4

5 回答 5

1

在第一行中,@"%2ld" 强制字符串长度为 2。您应该只使用 @"%ld" 甚至 @"%d"。

于 2013-03-27T14:44:53.347 回答
1

看第 1 行

todaysdateString1= [NSString stringWithFormat:@"%2ld",seconds];

在这里你已经为你的字符串 %2d 设置了填充,这意味着如果你的字符串是一个字符,它将添加 0 作为前缀。所以删除它,将其替换为以下行

todaysdateString1= [NSString stringWithFormat:@"%ld",seconds];
于 2013-03-27T14:45:57.383 回答
1

您发布的所有代码都应该是:

todaysdateString1 = [NSString stringWithFormat:@"%ld %@", seconds, seconds >= 10 ? @"seconds" : @"second"];

删除2将解决以空格显示 0 到 9 的问题。

另外,为什么要检查字符串长度?检查 的实际值seconds

最后,为什么要显示second0 到 9?通常,您应该second只显示 1 和seconds所有其他值。

于 2013-03-27T16:14:13.173 回答
0

由于您在 stringWithFormat 中使用“d”,因此我假设“seconds”是一个 int。

如果 seconds 是 int,只需检查 seconds 并查看它是否大于或小于等于 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];

将您的决定建立在一个简单的整数上可能更可靠。

于 2013-03-27T14:59:26.663 回答
0

你可以这样做:

if( (seconds > 0) && (seconds < 10) ){

      subtitle = [NSString stringWithString:@"second"];

}else{

      subtitle = [NSString stringWithString:@"seconds"]; 
    todaysdateString1 = [todaysdateString1 stringByAppendingFormat:@" %@",subtitle];

}
于 2013-03-27T15:01:28.720 回答