替换字符串中的特殊字符

Replace special characters in string

我有这样的字符串

我想将它们转换为 "Ruby-Rails"。我该怎么做?

" Ruby ! Rails ".split(/\W+/).reject(&:empty?).join("-")
=> "Ruby-Rails"

假设 1,2,3 是序列号,实际上不存在于字符串中,您可以使用 splitjoin:

a = "Ruby & Rails"
a.split(/\W+/).join("-")
# => "Ruby-Rails"

"Ruby& Rails".split(/\W+/).join("-")
# => "Ruby-Rails"

"Ruby !Rails".split(/\W+/).join("-")
# => "Ruby-Rails"

或者,如果序列号也是输入字符串的一部分:

"1. Ruby& Rails".split(/\W+|\d+/).reject(&:empty?).join("-")
# => "Ruby-Rails"

"2. Ruby& Rails".split(/\W+|\d+/).reject(&:empty?).join("-")
# => "Ruby-Rails"

"3. Ruby !Rails".split(/\W+|\d+/).reject(&:empty?).join("-")
# => "Ruby-Rails"

你可以使用 gsub。

string.gsub(/\s*\W+\s*/, "-")

string.gsub(/\W+/, "-")