首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Ruby:从嵌入式字符串中删除数字

Ruby:从嵌入式字符串中删除数字
EN

Stack Overflow用户
提问于 2013-09-30 10:18:46
回答 2查看 76关注 0票数 0

在Rails应用程序中,我正在读取一个带有键/值的文件。在键名中嵌入了一个索引号,我想删除它,以及一个间距下划线。

因此,在下面的示例数据中,我想转换:

  • PRIMER_LEFT_1_END_STABILITY转化为PRIMER_LEFT_END_STABILITY
  • PRIMER_RIGHT_1_END_STABILITY转化为PRIMER_RIGHT_END_STABILITY
  • PRIMER_PAIR_1_COMPL_ANY_TH转化为PRIMER_PAIR_COMPL_ANY_TH

样本数据

代码语言:javascript
复制
PRIMER_LEFT_1_END_STABILITY=7.2000

PRIMER_RIGHT_1_END_STABILITY=7.9000

PRIMER_PAIR_1_COMPL_ANY_TH=0.00

编辑

感谢@tihom的第一个答案。它部分工作,但我没有指定嵌入的整数可以有任何价值。当长度超过1位数时,正则表达式失败:

代码语言:javascript
复制
1.9.3-p327 :003 > "PRIMER_LEFT_221_END_STABILITY".sub(/_\d/,"")
 => "PRIMER_LEFT21_END_STABILITY"
1.9.3-p327 :004 > "PRIMER_LEFT_21_END_STABILITY".sub(/_\d/,"")
 => "PRIMER_LEFT1_END_STABILITY"
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-09-30 10:22:55

要删除第一个事件,请使用sub first删除所有事件,使用gsub

代码语言:javascript
复制
"PRIMER_LEFT_1_END_STABILITY".sub(/_(\d)+/,"") # => "PRIMER_LEFT_END_STABILITY" 

"+“匹配前面的一个或多个字符。因此,在这种情况下,它匹配任何数字中的一个或多个,后面跟着"_“。

票数 1
EN

Stack Overflow用户

发布于 2013-09-30 10:34:05

您可以使用http://ruby-doc.org/core-2.0.0/String.html#method-i-trhttp://ruby-doc.org/core-2.0.0/String.html#method-i-squeeze,如下所示:

代码语言:javascript
复制
ar=['PRIMER_LEFT_1_END_STABILITY','PRIMER_RIGHT_1_END_STABILITY','PRIMER_PAIR_1_COMPL_ANY_TH']
p ar.map{|s| s.tr('0-9','').squeeze("_")}
# => ["PRIMER_LEFT_END_STABILITY", "PRIMER_RIGHT_-END_STABILITY", "PRIMER_PAIR_COMPL_ANY_TH"]


ar=["PRIMER_LEFT_221_END_STABILITY","PRIMER_LEFT_21_END_STABILITY"]
p ar.map{|s| s.tr('0-9','').squeeze("_")}
# => ["PRIMER_LEFT_END_STABILITY", "PRIMER_LEFT_END_STABILITY"]
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/19091687

复制
相关文章

相似问题

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