正如小说所示,我想得到一些字符,并检查字符串是否为其中任何一个。如果我想,例如,"!"被禁止,然后string.replace("",word_with_!)
。如果forbidden_chars是一个数组,我如何检查禁止的字符?
forbidden_chars = ["!",",",...]
check ARRAY (it is the string split into an array) for forbidden chars
erase all words with forbidden chars
有人可以帮我吗?我只是考虑在答案中搜索带有卡片的单词并将索引检索为必填项。非常感谢你:))
答案 0 :(得分:3)
string = 'I like my coffee hot, with no sugar!'
forbidden_chars = ['!', ',']
forbidden_chars_pattern = forbidden_chars.map(&Regexp.method(:escape)).join('|')
string.gsub /\S*(#{forbidden_chars_pattern})\S*/, ''
# => "I like my coffee with no "
我们的想法是匹配尽可能多的非空白字符\S*
,然后是任意禁用字符(!|,)
,然后再次使用尽可能多的非空格字符。< / p>
我们需要Regexp.escape
的原因是禁止字符具有特殊正则表达式意义的情况(如.
)。
答案 1 :(得分:0)
string = 'I like my coffee strong, with no cream or sugar!'
verboten = '!,'
string.split.select { |s| s.count(verboten).zero? }.join ' '
#=> "I like my coffee with no cream or"
请注意,这不会保留"I"
和"like"
之间的间距,但如果string
中没有多余的空格,则返回一个没有多余空格的字符串。