Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/search/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在Ruby中检测输入字符串是否只有一个数字_Ruby - Fatal编程技术网

如何在Ruby中检测输入字符串是否只有一个数字

如何在Ruby中检测输入字符串是否只有一个数字,ruby,Ruby,正如我在标题中所写,我想知道字符串输入是否只包含一个数字 例如 222 # true 33333 # true 22334 # false 556677 # false 我本想使用String#reverse,但在556677中失败了 if input == input.reverse # do something end 最好的方法是什么?您可以使用像 ^(\d)\1*$ 例如,此代码 strs = ['11211', '1', '111', '2222', '212'] strs

正如我在标题中所写,我想知道字符串输入是否只包含一个数字

例如

222 # true
33333 # true
22334 # false
556677 # false
我本想使用String#reverse,但在
556677
中失败了

if input == input.reverse
  # do something
end

最好的方法是什么?

您可以使用像

^(\d)\1*$
例如,此代码

strs = ['11211', '1', '111', '2222', '212']

strs.each {|str|
    puts /^(\d)\1*$/.match(str)
}
…产生

1 
111 
2222 

.

您可以使用像

^(\d)\1*$
例如,此代码

strs = ['11211', '1', '111', '2222', '212']

strs.each {|str|
    puts /^(\d)\1*$/.match(str)
}
…产生

1 
111 
2222 
.

非正则表达式解决方案:

input.chars.uniq.size == 1
"222".chars.uniq.size == 1 #=> true
"556677".chars.uniq.size == 1 #=> false
非正则表达式解决方案:

input.chars.uniq.size == 1
"222".chars.uniq.size == 1 #=> true
"556677".chars.uniq.size == 1 #=> false
可以将后跟与匹配由单个数字组成的字符串的正则表达式一起使用:

"2222".squeeze[/^\d$/] #=> 2
"5566".squeeze[/^\d$/] #=> nil
"333a".squeeze[/^\d$/] #=> nil
"aaaa".squeeze[/^\d$/] #=> nil
返回值为
nil
(falsy)或唯一数字(truey)

这只是一个有趣的答案。在现实生活中,我会像@alex那样做。

您可以使用后跟一个正则表达式,该正则表达式匹配一个由单个数字组成的字符串:

"2222".squeeze[/^\d$/] #=> 2
"5566".squeeze[/^\d$/] #=> nil
"333a".squeeze[/^\d$/] #=> nil
"aaaa".squeeze[/^\d$/] #=> nil
返回值为
nil
(falsy)或唯一数字(truey)


这只是一个有趣的答案。在现实生活中,我会像@alex那样做。

可能是一个很好的候选人,也可能是一个很好的候选人,因为我就是这样做的,尽管我可能会写
puts str[/^(\d)\1*$/]
。很好的建议,我已经有一段时间没有写任何Ruby了。:)这就是我要做的,尽管我可能会写
puts str[/^(\d)\1*$/]
。好建议,我已经有一段时间没有写Ruby了。:)