如何使用Ruby測試字符串是否基本上是引號(hào)中的整數(shù)我需要一個(gè)功能is_an_integer,在哪里"12".is_an_integer? 返回true。"blah".is_an_integer? 返回false。我怎么能用Ruby做到這一點(diǎn)?我會(huì)寫一個(gè)正則表達(dá)式,但我假設(shè)有一個(gè)幫助,我不知道。
3 回答

DIEA
TA貢獻(xiàn)1820條經(jīng)驗(yàn) 獲得超3個(gè)贊
您可以使用正則表達(dá)式。這是@ janm建議的功能。
class String def is_i? !!(self =~ /\A[-+]?[0-9]+\z/) endend
根據(jù)@wich的評(píng)論編輯的版本:
class String def is_i? /\A[-+]?\d+\z/ === self endend
如果您只需要檢查正數(shù)
if !/\A\d+\z/.match(string_to_check) #Is not a positive number else #Is all good ..continue end

紅顏莎娜
TA貢獻(xiàn)1842條經(jīng)驗(yàn) 獲得超13個(gè)贊
您可以使用Integer(str)
并查看它是否會(huì)引發(fā):
def is_num?(str) !!Integer(str)rescue ArgumentError, TypeError falseend
應(yīng)該指出的是,雖然這確實(shí)會(huì)返回"01"
,但它并不適用"09"
,因?yàn)樗皇?code>09有效的整數(shù)文字。如果這不是您想要的行為,您可以添加10
第二個(gè)參數(shù)Integer
,因此該數(shù)字始終被解釋為基數(shù)10。
- 3 回答
- 0 關(guān)注
- 708 瀏覽
添加回答
舉報(bào)
0/150
提交
取消