加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

ruby – 如何从文本中删除非字符?

发布时间:2020-12-16 20:01:47 所属栏目:百科 来源:网络整理
导读:我想“这是一个101测试”是“这是一个测试”,但我不能得到正确的语法. src = 'This Is A 101 Test'puts "A) " + src # base = "This Is A 101 Test"puts "B) " + src[/([a-z]+)/] # only does first word = "his"puts "C) " + src.gsub!(/D/,"") # Does dig
我想“这是一个101测试”是“这是一个测试”,但我不能得到正确的语法.
src = 'This Is A 101 Test'
puts "A) " + src                       # base => "This Is A 101 Test"
puts "B) " + src[/([a-z]+)/]           # only does first word => "his"
puts "C) " + src.gsub!(/D/,"")       # Does digits,I want alphabetic => "101"
puts "D) " + src.gsub!(/W///g)        # Nothing. => ""
puts "E) " + src.gsub(/(W|d)/,"")   # Nothing. => ""

解决方法

首先,你需要注意gsub和gsub!后者是“危险的”并将修改src的值.如果您要按顺序执行这些语句,请注意,a.gsub!(/ a /,“b”)和a = a.gsub(/ a /,“b”)都会同样的做法.您的代码的一部分问题是src正在被修改.

B方法返回“他”,但不会更改源

src[/([a-z]+)/]     # => "his"
src                 # => "This Is A 101 Test"

C方法删除不是数字的所有字符:

src.gsub!(/D/,"") # => "101"
src                 # => "101"

D方法不起作用,因为语法错误. gsub方法接受正则表达式/字符串进行搜索,然后使用用于替换的字符串.如果你尝试在IRB,它会像你需要另一个/某个地方一样.

E方法替换所有非字词和所有数字:

src.gsub(/(W|d)/,"") # => "This Is A  Test" (note the two spaces)
src                     # => "This Is A 101 Test"

你指出它正在返回“”.那么实际发生的是列出的C和D(修正了语法问题)是破坏性的变化. (另外,如果在“101”上运行,D将实际返回为零,因为没有进行任何替换.)所以E只是在“101”上运行,并且由于您用“”替换所有非单词和所有数字,它变成“101”.

你正在寻找的答案将是:

src.gsub!(/ds?/,"") # => "This Is A Test"
src                    # => "This Is A Test"

和我最喜欢的处理双重空间的所有场景(因为挤压是非常有效的组合像角色,条带是非常有效的剥离尾随的空格,而那些!返回没有,如果他们没有替换):

src = src.gsub(/d+/,"").squeeze(" ").strip

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读