首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在不使用时间的情况下删除左边的重复字符串?

如何在不使用时间的情况下删除左边的重复字符串?
EN

Stack Overflow用户
提问于 2019-10-19 06:50:01
回答 4查看 88关注 0票数 1

例如,我的字符串仅为数字

0009102

如果我将它转换为整数,Ruby会自动给出以下值:

9102

是这样的。但是我的程序给了我不同类型的数字:

2229102期望输出=> 9102

9999102期望输出=> 102

如果您看一下它们,我已经将29作为零处理,因为它们被自动删除了。嗯,用while删除它们很容易,但我必须避免。

换句话说,你如何使左边的'n‘被认为是Ruby的零?

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2019-10-19 07:01:30

代码语言:javascript
复制
"2229102".sub(/\A(\d)\1*/, "") #=> "9102"`.

正则表达式是:“匹配捕获组1 (\A )中字符串中的第一个数字(\A是字符串锚) ((\d)),后面跟着等于捕获组1 (\1)内容的零个或多个字符(*)。String#gsub将该匹配转换为空字符串。

票数 2
EN

Stack Overflow用户

发布于 2019-10-19 07:26:08

尝试使用

代码语言:javascript
复制
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"]]

票数 1
EN

Stack Overflow用户

发布于 2019-10-19 10:50:54

iGian解决方案类似,您也可以使用drop_while

代码语言:javascript
复制
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"
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/58461241

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档