-2

文字列 0..9 を秒として表示し、10 個の単語から秒として表示したいアプリケーションがあります。 .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]; 

「誰か助けてくれませんか?

4

5 に答える 5

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 に答える
1

最初の行で、@"%2ld" は文字列の長さを強制的に 2 にします。@"%ld" または @"%d" だけを使用する必要があります。

于 2013-03-27T14:44:53.347 に答える
1

行番号1を見てください

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

ここでは、文字列 %2d にパディングを設定しています。つまり、文字列が 1 文字の場合、プレフィックスとして 0 が追加されます。それを削除して、次の行に置き換えます

todaysdateString1= [NSString stringWithFormat:@"%ld",seconds];
于 2013-03-27T14:45:57.383 に答える
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 に答える
0

stringWithFormat で「d」を使用しているため、「秒」は 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 に答える