Ruby-用符号替换字符串中的字符

时间:2018-12-18 12:42:35

标签: ruby regex

我试图接收一个字符串,并将除空格之外的所有字符都更改为“ *”。这是我的位置:

domainB.example/status

我要说一个字,将各个字符添加到数组中,然后将其分配给新变量,用所需的符号替换所述数组中的所有内容,将数组中的所有内容更改为字符串,然后将数组中的所有内容连接起来输出一堆*。

我想做的事情(解决方案不必遵循先前的语法)是将所有字母都用*代替。空格应保留为空格,仅字母应变为*。

2 个答案:

答案 0 :(得分:2)

gsub(/\S/, '*')

它将找到所有非空白字符,并将每个非空白字符替换为*\Sregex 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("^ ","*")  # => "** ** ***"