Ruby on rails 之前如何从字符串中删除__

Ruby on rails 之前如何从字符串中删除__,ruby-on-rails,ruby,Ruby On Rails,Ruby,我正在构建Rails 5.2应用程序。 在这个应用程序中,我得到了来自不同供应商的输出(我正在建立一个网店) 装运提供商的名称采用以下格式: dhl_freight__233433 postal__US-320202 也可以采用以下格式: dhl_freight__233433 postal__US-320202 我怎样才能删除之前(包括)的所有内容,所以剩下的都是之后的内容,比如233433 可能是某种正则表达式。一种非常简单的方法是使用,然后选择第二部分,即本例中的部分: "

我正在构建Rails 5.2应用程序。 在这个应用程序中,我得到了来自不同供应商的输出(我正在建立一个网店)

装运提供商的名称采用以下格式:

dhl_freight__233433
postal__US-320202
也可以采用以下格式:

dhl_freight__233433
postal__US-320202
我怎样才能删除之前(包括)的所有内容,所以剩下的都是之后的内容,比如233433


可能是某种正则表达式。

一种非常简单的方法是使用,然后选择第二部分,即本例中的部分:

"dhl_freight__233433".split('__').last
#=> "233433"

"postal__US-320202".split('__').last
#=> "US-320202"
正则表达式匹配除下划线以外的一个或多个字符,后跟字符串结尾(
\z
)。character类开头的
^
显示“后面的任何字符除外”

这假定最后一个下划线前面有一个下划线。如果最后一个下划线前面没有下划线,在这种情况下应该没有匹配项,请添加一个正向查找:


r=/(?您可以使用一个非常简单的Regexp,并询问匹配后部分的结果:

p "dhl_freight__233433".match(/__/).post_match
# another (magic) way to acces the post_match part:
p $'

附言:我自己从这个问题中学到了一些东西:你甚至不必使用RegExp就可以了。只需
“asddfg\uuuuqwer”。match(“\uuu”)。post\u match
会起作用(它会为你转换为RegExp)从字符串中提取数字有很多ruby方法。我希望您尝试从字符串中提取数字。以下是一些方法

参考-

在上面的
delete
中,从字符串中删除数字的速度最快

以上所有内容都是从字符串中提取数字并将其连接起来。如果字符串是这样的
“string-with-67829”-uuuuu-numbers-09764”
outut将是这样的
“6782909764”

如果您希望像这样拆分数字,
[“67829”、“09764”]


希望这些答案对您有所帮助!快乐编码:-)

是的,在这里查看文档以了解熟悉的方法通常很有用。我也不知道参数(“pattern”)可以是字符串(在这种情况下,它被转换为正则表达式),我被提醒,
match
将搜索开始时的索引作为可选的第二个参数,这是人们不常看到的……此外,我已经忘记了(和)。(注意你最后一句话中的
post_match
)谢谢@CarySwoveland,拼写改进也很好。
p "dhl_freight__233433".match(/__/).post_match
# another (magic) way to acces the post_match part:
p $'
line.delete("^0-9")

line.scan(/\d/).join('')

line.tr("^0-9", '')
line.split(/[^\d]/).reject { |c| c.empty? }