我试图接收一个字符串,并将除空格之外的所有字符都更改为“ *”。这是我的位置:
domainB.example/status
我要说一个字,将各个字符添加到数组中,然后将其分配给新变量,用所需的符号替换所述数组中的所有内容,将数组中的所有内容更改为字符串,然后将数组中的所有内容连接起来输出一堆*。
我想做的事情(解决方案不必遵循先前的语法)是将所有字母都用*代替。空格应保留为空格,仅字母应变为*。
答案 0 :(得分:2)
gsub(/\S/, '*')
它将找到所有非空白字符,并将每个非空白字符替换为*
。 \S
是regex character class匹配非空格字符(感谢@jdno)。
例如
pry> "as12 43-".gsub(/\S/, '*')
=> "**** ***"
所以在您的情况下:
def change_word(word)
word.gsub(/\S/, '*')
end
您也可以在方法之外提取正则表达式以对其进行优化:
CHANGE_WORD_PATTERN = /\S/
def change_word(word)
word.gsub(CHANGE_WORD_PATTERN, '*')
end
答案 1 :(得分:0)
当String的tr
方法中的第一个参数以“ ^”开头时,则表示:。因此,“ ^”表示除空格以外的所有内容。
word = "12 34 rfv"
word.tr("^ ","*") # => "** ** ***"