如何用Ruby正则表达式替换URL中除首条外的所有斜杠为短横线
方法1:正则表达式替换
如果你固定前缀为localhost:3000,可以用正向否定后发断言匹配目标斜杠直接替换:
url = "localhost:3000/filter/shoes/color/white" # 匹配所有前面不是localhost:3000的斜杠,替换为- result = url.gsub(/(?<!localhost:3000)\//, '-') puts result # 输出:localhost:3000/filter-shoes-color-white
如果前缀不固定(可能是其他域名/端口),可以用更通用的正则实现:
url = "localhost:3000/filter/shoes/color/white" # 先匹配开头到第一个斜杠的前缀,再把剩余部分的斜杠全部替换 result = url.sub(/\A(.*?\/)(.*)/) { "#{$1}#{$2.gsub('/', '-')}" } puts result
方法2:分割拼接(逻辑更简单易维护)
不需要写复杂正则,直接按第一个斜杠拆分字符串处理后拼接即可,适配所有前缀场景:
url = "localhost:3000/filter/shoes/color/white" # split的第二个参数2表示最多分割为2个部分 prefix, rest = url.split('/', 2) result = "#{prefix}/#{rest.gsub('/', '-')}" puts result
内容的提问来源于stack exchange,提问作者jujajjjj
相关产品推荐
相关产品推荐

