2011-09-12 16 views
3

ここに簡単な質問がありますが、おそらく検索は似たような質問はありませんでした。ルアの文字列の長さを見つけますか?

#演算子は、文字列の長さなどを検索します。しかし、Luaは動的に型付けされているので、変換演算子はありません。長さを決めるために、数値を文字列としてどのように入力すればよいですか?

たとえば、1から9の階乗をフォーマット済みの表に印刷したいとします。

i,F = 1,1 
while i<10 do 
    print(i.."! == "..string.rep("0",10-#F)..F) 
    i=i+1 
    F=F*i 
end 

エラー:グローバル「F」(数値)の長さを取得しようとする試み

答えて

13

文字列にFを変換するtostring(F)を使用しない理由は?

+0

これは機能しますが、HennyHには正しい答えがあります。速い式があるときに文字列操作のチューンを行う理由はありません – Nowayz

5

これを行うにはおそらく十数の方法があります。簡単な方法は、Danの言葉としてtostringを使用することです。空の文字列を連結することもできます(例: F_str=""..Fを使用して、F_strを文字列表現として取得します。あなたは出力にフォーマットされた文字列をしようとしているので、しかし、あなたのためのすべてのハードワークを行うためにstring.formatメソッドを使用します。

i,F = 1,1 
while i<10 do 
    print(string.format("%01d! == %010d", i, F)) 
    i=i+1 
    F=F*i 
end 
+0

質問の重要な部分は、Danが答えた数値の文字列長を決定することでしたが、例を別の方法で解決してくれたことに感謝します。 –

3
また

length = math.floor(math.log10(number)+1) 

慎重に、しかし、これが唯一ここで、n動作します> 0!

0

while tostring(F).len < 10 doは役に立ちませんか?

関連する問題