如果需要,我正在尝试添加尾部斜杠:
a = '/var/www'
a.gsub
...
我不知道该怎么做。
答案 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 ?
sub
而不是gsub
。sub!
或gsub!
。由于您没有进行替换,只需根据需要附加斜杠:
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/"