如果需要使用gsub如何添加尾部斜杠

时间:2010-08-13 12:34:19

标签: ruby gsub

如果需要,我正在尝试添加尾部斜杠:

a = '/var/www'
a.gsub
...

我不知道该怎么做。

9 个答案:

答案 0 :(得分:21)

a = File.join(a, "")

Swift,简单,并且具有保证a在路径分隔符中结束的效果;也就是说,无论a"/var/www"还是"/var/www/",它都会得到相同的结果。

这与Joe White上面的评论相同;我不知道他为什么不提交答案,因为它应该是一个答案。

奇怪的是,Pathname库没有提供做同样事情的便捷方法。

答案 1 :(得分:14)

这是一个更具可读性的版本

path << '/' unless path.end_with?('/')

答案 2 :(得分:2)

为什么要使用 gsub

  1. 你没有做替换(没有东西要从字符串中删除)
  2. 如果您正在替换,只需要在一个地方完成,请使用sub而不是gsub
  3. 如果您要替换,并想要修改字符串,请使用sub!gsub!
  4. 由于您没有进行替换,只需根据需要附加斜杠:

    path << '/' if path[-1] != '/' # Make sure path ends with a slash
    

    更新:要使其与旧版本的Ruby(1.8.x)兼容,请稍加修改:

    path << '/' if path[-1].chr != '/' # Make sure path ends with a slash
    

答案 3 :(得分:0)

这看起来不太好..但是有效:

  

t =“some text”

     

t [-1] == 47? t:t +“/”

47是反斜杠代码

答案 4 :(得分:0)

以下脚本显示了如何做到这一点:

a="/var/www";
print a + "\n";
a = a.gsub(/([^\/]$)/, '\1/');
print a + "\n";
a = a.gsub(/([^\/]$)/, '\1/');
print a + "\n";

输出:

/var/www
/var/www/
/var/www/

并通过替换该行的最后一个字符(如果它不是/)并使用相同的字符加上尾随的/来工作。

答案 5 :(得分:0)

已经涵盖了几种不同的方式,通过另一种方式进入混合:

(a << '/').gsub!('//','/')

(a << '/').squeeze('/')

值得注意的是,两者都会将字符串中的任何“//”转换为“/”,但如果您只是处理路径,则不太可能导致问题。

答案 6 :(得分:0)

"/var/www".gsub(/[^\/]$/, '\1/')  #=> "/var/www/"
"/var/www/".gsub(/[^\/]$/, '\1/') #=> "/var/www/"

答案 7 :(得分:0)

相当简单的gsub,作为一个单元格而不是连接(&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;

a = '/var/www'
a.gsub('/?$', '/')

这只是在字符串末尾找到一个可选的/字符并且代表

答案 8 :(得分:0)

您可以使用.chomp('/')删除尾随的/,然后使用.concat('/')再次添加斜杠。

'/var/www/'.chomp('/').concat('/')   # => "/var/www/"
'/var/www'.chomp('/').concat('/')    # => "/var/www/"