例如,我的字符串仅为数字
0009102
如果我将它转换为整数,Ruby会自动给出以下值:
9102
是这样的。但是我的程序给了我不同类型的数字:
2229102期望输出=> 9102
9999102期望输出=> 102
如果您看一下它们,我已经将2和9作为零处理,因为它们被自动删除了。嗯,用while删除它们很容易,但我必须避免。
换句话说,你如何使左边的'n‘被认为是Ruby的零?
发布于 2019-10-19 07:01:30
"2229102".sub(/\A(\d)\1*/, "") #=> "9102"`.正则表达式是:“匹配捕获组1 (\A )中字符串中的第一个数字(\A是字符串锚) ((\d)),后面跟着等于捕获组1 (\1)内容的零个或多个字符(*)。String#gsub将该匹配转换为空字符串。
发布于 2019-10-19 07:26:08
尝试使用而
s = '222910222'
s.each_char.chunk_while(&:==).drop(1).join
#=> "910222"其中s.each_char.chunk_while(&:==).to_a #=> [["2", "2", "2"], ["9"], ["1"], ["0"], ["2", "2", "2"]]
发布于 2019-10-19 10:50:54
与iGian解决方案类似,您也可以使用drop_while。
s = '222910222'
s.each_char.each_cons(2).drop_while { |a, b| a == b }.map(&:last).join
#=> "910222"
# or
s.each_char.drop_while.with_index(-1) { |c, i| i < 0 || c == s[i] }.join
#=> "910222"https://stackoverflow.com/questions/58461241
复制相似问题