Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ruby 替换字符串中的特殊字符_Ruby_String_Special Characters - Fatal编程技术网

Ruby 替换字符串中的特殊字符

Ruby 替换字符串中的特殊字符,ruby,string,special-characters,Ruby,String,Special Characters,我有像 “Ruby&Rails” “Ruby&Rails” “Ruby!Rails” 我想将它们转换成“Ruby Rails”。如何执行此操作?假设1,2,3是序列号,而不是实际存在于字符串中,则可以使用拆分和加入: " Ruby ! Rails ".split(/\W+/).reject(&:empty?).join("-") => "Ruby-Rails" a = "Ruby & Rails" a.split(/\W+/).join("-") # => "R

我有像

  • “Ruby&Rails”
  • “Ruby&Rails”
  • “Ruby!Rails”

我想将它们转换成
“Ruby Rails”
。如何执行此操作?

假设1,2,3是序列号,而不是实际存在于字符串中,则可以使用
拆分
加入

" Ruby ! Rails ".split(/\W+/).reject(&:empty?).join("-")
=> "Ruby-Rails"
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*/, "-")


是否要删除
1
2
?否。我想将字符串(如1,2,3)转换为Ruby Rails。它们都是具有特殊字符的不同版本。输入字符串中是否实际存在1、2、3?我需要在拆分中提供所有特殊字符?有没有办法给出一些正则表达式?是的,
\W
:任何非单词字符
string.gsub(/\W+/, "-")