如何在Ruby中替换/删除字符串中的特定特殊字符?
Ruby处理特殊字符:删除@并替换/为_
直接利用Ruby字符串的gsub方法,通过链式调用就能完成需求:
def process_string(str) str.gsub(/@/, '').gsub('/', '_') end
实现思路
- 删除所有@字符:使用
gsub(/@/, ''),把字符串中所有@替换为空字符串,等价于直接删除该字符。 - 替换/为_字符:紧接着调用
gsub('/', '_'),全局替换所有斜杠为下划线。
示例验证
示例1
输入:
string = "noMad@/places/-/contents/imr/-/pops/-"
调用方法后:
output_string = process_string(string) # 输出结果:"noMad_places_-_contents_imr_-_pops_-"
(注:你提供的示例1预期结果中-pops应为笔误,按照原输入的/-/pops/-,替换后应为-_pops_-)
示例2
输入:
string = "cat@/places/-/chart/rules"
调用方法后:
output_string = process_string(string) # 输出结果:"cat_places_-_chart_rules"
如果想要更高效的写法(仅遍历字符串一次),可以合并为单次gsub调用,通过匹配分支处理不同字符:
def process_string(str) str.gsub(/[@\/]/) { |char| char == '@' ? '' : '_' } end
内容的提问来源于stack exchange,提问作者regularuser
相关产品推荐
相关产品推荐

