如果需要,我正在尝试添加斜杠:
a = '/var/www'
a.gsub
...
我不知道该怎么做。
a = File.join(a, "")
Swift,简单,并且具有保证a
以路径分隔符结尾的效果;也就是说,无论a
是"/var/www"
还是,它都会给出相同的结果"/var/www/"
。
这与上面 Joe White 的评论相同;我不知道他为什么不提交它作为答案,因为它应该是一个。
奇怪的是,Pathname 库没有提供一种方便的方式来做同样的事情。
这是一个更具可读性的版本
path << '/' unless path.end_with?('/')
为什么要使用gsub?
sub
not gsub
。sub!
or 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
您可以使用.chomp('/')
删除可选的尾随/
,然后.concat('/')
再次附加斜杠。
'/var/www/'.chomp('/').concat('/') # => "/var/www/"
'/var/www'.chomp('/').concat('/') # => "/var/www/"
"/var/www".gsub(/[^\/]$/, '\1/') #=> "/var/www/"
"/var/www/".gsub(/[^\/]$/, '\1/') #=> "/var/www/"
以下脚本显示了如何做到这一点:
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/
/
并通过用相同的字符加上尾随替换该行的最后一个字符(如果它不是 a )来工作/
。
已经涵盖了几种不同的方法,可以通过另一种方法进行混合:
(a << '/').gsub!('//','/')
或者
(a << '/').squeeze('/')
值得注意的是,尽管这两种情况都会将字符串中任何位置的 '//' 转换为 '/',但如果您只是处理路径,则不太可能导致问题。
非常简单的 gsub,作为单行比串联 (<<) 更容易
a = '/var/www'
a.gsub('/?$', '/')
这只是/
在字符串的末尾找到一个可选字符并表示