Ruby 替换标点符号?
我的任务是将Ruby 替换标点符号?,ruby,string,replace,Ruby,String,Replace,我的任务是将'you'、'u'和'youuuu'(使用'u'的数字)的所有实例替换为'your side')字符串 这是我的密码: def autocorrect(input) words = input.split() words.each do |word| if word == 'u' || word == 'you' word.replace 'your sister' elsif word.include? 'you' word.repl
'you'
、'u'
和'youuuu'
(使用'u'
的数字)的所有实例替换为'your side'
)字符串
这是我的密码:
def autocorrect(input)
words = input.split()
words.each do |word|
if word == 'u' || word == 'you'
word.replace 'your sister'
elsif word.include? 'you'
word.replace 'your sister'
end
end
words = words.join(' ')
words
end
我的代码正确地替换了单词,但它也删除了标点符号。我明白了:
autocorrect("I miss you!")
# => "I miss your sister"
输出中没有感叹号。有人知道为什么会发生这种情况吗?我想你可以用gsub代替,用你姐姐代替你,这样它就保留了感叹号 因为
replace
将替换正在传递的整个字符串,例如:
p 'you!'.replace('your sister') # => "your sister"
p 'you!'.gsub(/you/, 'your sister') # => "your sister!"
因此,您可以尝试:
def autocorrect(input)
words = input.split()
words.each do |word|
if word == 'u' || word == 'you'
word.replace 'your sister'
elsif word.include? 'you'
word.gsub!(/you/, 'your sister')
end
end
words = words.join(' ')
words
end
p autocorrect("I miss you!")
# => "I miss your sister!"
注意:在输入中使用gsub将获得预期的输出。我认为,您可以使用gsub,将
you
替换为妹妹,这样它就保留了感叹号
因为replace
将替换正在传递的整个字符串,例如:
p 'you!'.replace('your sister') # => "your sister"
p 'you!'.gsub(/you/, 'your sister') # => "your sister!"
因此,您可以尝试:
def autocorrect(input)
words = input.split()
words.each do |word|
if word == 'u' || word == 'you'
word.replace 'your sister'
elsif word.include? 'you'
word.gsub!(/you/, 'your sister')
end
end
words = words.join(' ')
words
end
p autocorrect("I miss you!")
# => "I miss your sister!"
注意:在输入中使用gsub可以得到预期的输出。在ruby中使用空格分割字符串时,它会使用标点符号
试着拆分一个句子,比如“我喜欢糖果!”并检查最后一个元素。你会注意到是“糖果”这个词,感叹号等等 在ruby中拆分带空格的字符串时,会使用标点符号
试着拆分一个句子,比如“我喜欢糖果!”并检查最后一个元素。你会注意到是“糖果”这个词,感叹号等等 部分基于对该问题的评论,我假设要替换的子字符串不能在前面或后面紧跟字母
r = /
(?<!\p{alpha}) # do not match a letter (negative lookbehind)
(?: # begin non-capture group
you+ # match 'yo' followed by one of more 'u's
| # or
u # match 'u'
) # close non-capture group
(?!\p{alpha}) # do not match a letter (negative lookahead)
/x # free-spacing regex definition mode
"uyou you youuuuuu &you% u ug".gsub(r, "your sister")
#=> "uyou your sister your sister &your sister% your sister ug"
r=/
(?“你姐姐你姐姐&你姐姐%ug你姐姐”
这个正则表达式是按惯例编写的
/(?<!\p{alpha})(?:you+|u)(?!\p{alpha})/
/(?部分基于对该问题的评论,我假设要替换的子字符串不能在前面或后面紧跟字母
r = /
(?<!\p{alpha}) # do not match a letter (negative lookbehind)
(?: # begin non-capture group
you+ # match 'yo' followed by one of more 'u's
| # or
u # match 'u'
) # close non-capture group
(?!\p{alpha}) # do not match a letter (negative lookahead)
/x # free-spacing regex definition mode
"uyou you youuuuuu &you% u ug".gsub(r, "your sister")
#=> "uyou your sister your sister &your sister% your sister ug"
r=/
(?“你姐姐你姐姐&你姐姐%ug你姐姐”
这个正则表达式是按惯例编写的
/(?<!\p{alpha})(?:you+|u)(?!\p{alpha})/
/(?字符串“uyou youuu”的期望返回值是多少。我意识到我的代码不适用于所有测试。该字符串的期望输出为“uyou your sister your sister”,测试要求替换“you”,但不是当它是另一个词的一部分时。这就是我刚刚通过测试的方式:def autocorrect(input)input.gsub(/\b(you+| u)\b/i,'your sister')end在单词边界之间查找'you'和附加的任意数量的'u'。比我写的要短得多,regex是一个强大的工具。…字符串“uyou youuuu”的期望返回值是多少。我意识到我的代码不适用于所有测试。期望的输出是“uyou your sister your sister”,测试要求替换“you”,但不是当它是另一个单词的一部分时。这就是我刚刚通过测试的方式:def autocorrect(input)input.gsub(/\b(you+|u)\b/I,“your sister”)end在单词边界之间寻找“you”和附加的任意数量的“u”…比我写的要短得多,regex是一个强大的工具。。。。