2012-04-26 15 views
1

0〜4桁の数字で始まり、小規模ではあるが不明な小数点以下の文字で終わる文字列値が渡されています。先頭の小数点を4桁の数字に "0"の文字で詰め込む必要があります。私が "abcd"を渡したら、 "0000abcd"を返します。私が "0xyz"を渡すと、私は "0000xyz"を返します。以下のように...可変幅の文字列の埋め込み

私は私が行う必要がどのくらいのパディングを検出するには、次のコードを使用しています

:私は正確に私の挑戦はでパディングを追加することですパディングを決定することができること

int padding = 0; 
int strlen = [rawString length]; 
NSRange rng = [rawString rangeOfCharacterFromSet:[[NSCharacterSet decimalDigitCharacterSet] invertedSet]]; 

if (rng.length > 0 && rng.location < 4) // Characters were found at the end. 
    padding = 4 - rng.location; 
else if (rng.length == 0 && strlen < 4) // Only numbers were found. 
     padding = 4 - strlen; 

を今すぐ効率的な方法。私は次のようなことをすることができますが、それは私には効率が悪いと感じています。

for (; padding > 0; padding--) 
    rawString = [@"0" stringByAppendingString:rawString]; 

私が説明したもののような文字列にパディングの変数量を追加するための良い方法はありますか?

EDIT:は、私は戻って、それを追加し、それをパディング、数値部分をオフにチョッピング、と考えられますが、コーナーケースの数は、その場での溶液中で最高になることを示しているように見えました。

答えて

0

padding04との間にあるので、あなたがこれを行うことができます:

rawString = [[@"0000" substringFromIndex:4-padding] stringByAppendingString:rawString]; 

アイデアは四つの要素を含む文字列からゼロの右の数を切り落とすことです。

関連する問題