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 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |