2012-06-09 10 views
130

Luaで文字列を整数に変換するにはどうすればよいですか?ありがとうございました。ルア文字列をintにする

私はこのような文字列があります。

a = "10" 

私はそれが10、数値に変換することを希望します。

+6

を置くべきである正確なリンクは強制に関するセクションです:[5.1](http://www.lua.org/manual/5.1/manual.html#2.2.1)、[5.2](htt p://www.lua.org/manual/5.2/manual.html#3.4.2)。 – lhf

+5

@NicolBolas:最初のGoogleの結果である質問をするための+1で、直感的な回答が得られます。 – ereOn

+2

+1この噛んだトロールを補うために+1ニコール:D –

答えて

215

tonumber functionを使用してください。 a = tonumber("10")のように。

+4

Lua 5.3では、(64ビットのデフォルトの)整数はそれに応じて扱われます(http://www.lua.org/manual/5.3/manual.html)。「小数点または指数付きの数値定数は浮動小数点数を表します。それ以外の場合は整数を表します。 –

27

a= "10" + 0のように算術演算で文字列を使用して強制的に暗黙の変換を行うことはできますが、これは明示的にtonumberを使用するほど明確ではないです。

+0

私はこれが '' 100 ''ではなく' '10' 'であると思います。しかし、それをテストしていない。 – Kroltan

+2

いいえ、それは整数に "10"を変換し、0を追加します。 (しかし、明瞭性の欠如は、代わりに 'トンネル(tonumber) 'を使用するより多くの理由です!) – Rena

+10

@Rena、明快さの欠如はありません。 '+'は常に明示的に追加、 '..' - 連結です。 –

8

ルアのすべての数字は浮動小数点数です(編集:ルア5.2以下)。あなたが本当に「INT」(あるいは、少なくとも、この動作を複製する)に変換したい場合は、この操作を行うことができます:あなたが明示的に(それが何であれ、本当にまたは)文字列を変換

local function ToInteger(number) 
    return math.floor(tonumber(number) or error("Could not cast '" .. tostring(number) .. "' to number.'")) 
end 

た場合そして、Javaでキャストするような(int)のような数字を切り捨てます。

編集:これはまだLuaの5.3で、でもmath.floor()numberがfloatである場合などnumber // 1はまだfloatを返しますオペレータに対し、整数を返すようLuaの5.3は、実際の整数値を持っていると思った作品。 http://hyperpolyglot.org/

http://hyperpolyglot.org/more#str-to-num-note

PS:私はHyperpolyglotをチェックするためにお勧めします

1

は、素晴らしい比較を持っています。実際には、Luaはint型ではなくdouble型に変換されます。

数値タイプは、実数(倍精度浮動小数点) の数を表します。

http://www.lua.org/pil/2.3.html

3

あなたは数に変身したい文字列を変数Sそれは数を返しますSに数字と数字だけがあることを提供

a=tonumber(S) 

、 であると言います数値ではない文字(浮動小数点数を除く)がある場合 それはゼロを返します

5
local a = "10" 
print(type(a)) 
local num = tonumber(a) 
print(type(num)) 

出力

string                                           
    number 
1

あなたはそれで10 intとして "10" を維持するためのアクセサを作ることができます。

例:

x = tonumber("10") 

あなたはx変数を印刷する場合、それが出力int型10とではない "10"

Pythonのプロセスのように同じ

のx = INT( "10" )

ありがとうございます。

3

より明確な選択肢は、番のです。

5.3.2から、この関数は、整数、浮動小数点(ポイントがある場合)、および16進数(文字列が "0x"または "0X"で始まる場合は整数と浮動小数点)を自動的に検出します。

次のスニペットは短いが、等価ではありません。

  • a + 0 -- forces the conversion into float, due to how + works 
    
  • ここ
    a | 0 -- (| is the bitwise or) forces the conversion into integer. 
    --However, unlike math.tonteger, it errors if it fails 
    
0

はあなたが

local stringnumber = "10" 
local a = tonumber(stringnumber) 
print(a + 10) 

output: 

20 
関連する問題