Ruby 检查我的变量是整数还是字符串
我需要检查我的变量是整数还是字符串。 下面的代码只会中断循环,不会警告我非法字符。谁能帮我找出错误吗Ruby 检查我的变量是整数还是字符串,ruby,Ruby,我需要检查我的变量是整数还是字符串。 下面的代码只会中断循环,不会警告我非法字符。谁能帮我找出错误吗 x = 0 while x == 0 name = gets.chomp.capitalize if name.empty? puts "No input. Try again" elsif name.is_a? Integer puts "Illegal character: Integer " else x = 1 end
x = 0
while x == 0
name = gets.chomp.capitalize
if name.empty?
puts "No input. Try again"
elsif name.is_a? Integer
puts "Illegal character: Integer "
else
x = 1
end
end
您可以这样做:
loop do
puts "Enter name"
name = gets.chomp
if name.empty?
puts "No input, try again"
elsif name.scan(/\d+/).any?
puts "Illegal character: Integer"
else
raise StopIteration
end
end
格表达式
或者用一个case表达式来整理东西
loop do
puts "Enter name"
case gets.chomp
when ''
puts "No input, try again"
when /\d/
puts "Illegal character: Integer"
else
raise StopIteration
end
end
请参阅,有关详细信息,您可以执行以下操作:
loop do
puts "Enter name"
name = gets.chomp
if name.empty?
puts "No input, try again"
elsif name.scan(/\d+/).any?
puts "Illegal character: Integer"
else
raise StopIteration
end
end
格表达式
或者用一个case表达式来整理东西
loop do
puts "Enter name"
case gets.chomp
when ''
puts "No input, try again"
when /\d/
puts "Illegal character: Integer"
else
raise StopIteration
end
end
有关更多详细信息,请参见和,因为
获取
返回一个字符串,您需要确定该字符串是否表示一个数字(并且仅表示一个数字)
首先,使用to_i
将字符串转换为整数。请注意,对于不包含数字的字符串,to_i
返回0
。在第二步中,检查将此整数转换回字符串是否与原始字符串匹配
string.to_i.to_s == string
请注意,这只是一个简单的示例,它不适用于字符串00
另一种方法可能是检查字符串是否只包含数字。这可以通过使用regexp实现:
string.match(/\A\d+\z/)
因为
gets
返回一个字符串,您需要确定该字符串是否表示一个数字(并且仅表示一个数字)
首先,使用to_i
将字符串转换为整数。请注意,对于不包含数字的字符串,to_i
返回0
。在第二步中,检查将此整数转换回字符串是否与原始字符串匹配
string.to_i.to_s == string
请注意,这只是一个简单的示例,它不适用于字符串00
另一种方法可能是检查字符串是否只包含数字。这可以通过使用regexp实现:
string.match(/\A\d+\z/)
可能重复的字符串是否希望字符串完全没有数字?像“asdfg09qwerty”这样的字符串对您是否有效?
elsif name.is_A?整数
将始终返回false
,因为name
是字符串。:-)可能重复的字符串是否希望字符串完全没有数字?像“asdfg09qwerty”这样的字符串对您是否有效?elsif name.is_A?整数
将始终返回false
,因为name
是字符串。:-)<代码>匹配优于扫描
。请看斯皮克曼的回答。这两个帐户是怎么回事?:)@塞尔吉奥图兰采夫:我想其中一个应该保持匿名,另一个更“公开”我的真实姓名。我从未真正使用过我的匿名用户名,直到几天前我想我会尝试使用一个新的用户名iceツ. 这当然不是出于任何非法原因(0票)。无论如何,我认为最好保留这两个帐户,并在合并的过程中,但现在将保留这个用户名:)哦,不,我不是在暗示你有任何可疑的行为。只是好奇:)match
比scan
更可取。请看斯皮克曼的回答。这两个帐户是怎么回事?:)@塞尔吉奥图兰采夫:我想其中一个应该保持匿名,另一个更“公开”我的真实姓名。我从未真正使用过我的匿名用户名,直到几天前我想我会尝试使用一个新的用户名iceツ. 这当然不是出于任何非法原因(0票)。无论如何,我认为最好保留这两个帐户,并在合并的过程中,但现在将保留这个用户名:)哦,不,我不是在暗示你有任何可疑的行为。只是好奇:)