我在基于Sinatra的应用程序中有这个URL:
<li><a href="/blog/<%= blog.title.tr(' ', '-') %>/<%= blog.slug %>"
method="get">Show</a></li>
当我点击它时,URL如下所示:
http://127.0.0.1:9292/blog/A-lovely-day/654790
我也想让最后一个/
也成为-
,所以它会是:
http://127.0.0.1:9292/blog/A-lovely-day-654790
如何在呈现URL后替换它?
答案 0 :(得分:0)
您可以指定多个字符进行转换
blog.title.tr(" /", "-")
答案 1 :(得分:0)
r = /
.* # match any character zero or more times (greedily)
\K # forget all matches so far
\/ # match a forward slash
/x # free-spacing regex definition mode
要使用替换字段返回新字符串:
blog.title.sub(r, '-')
在现有字符串中进行替换:
blog.title.sub!(r, '-')
可以使用捕获组代替\K
:
blog.title.sub(/(.*)\/(.*)/, '\1-\2')
在现有字符串中进行替换的另一种方法:
blog.title[blog.title.rindex('/')] = '-'
答案 2 :(得分:0)
答案 3 :(得分:0)
以下是我的观点:
path
在控制器中生成URL,并仅在视图中输出变量。
使用内置工具总是好的。 URI在操作URL / URI时有帮助,并在必要时理解适当的编码。
此外,记住authViewController
实际上是文件路径名很有用,因此有时File包对于操作/拆分/加入非常有用。这不是一个很好的例子,但它非常方便。
答案 4 :(得分:0)
'http://127.0.0.1:9292/blog/A-lovely-day/654790'.
sub(/\/(?!.*\/)/,'-') # match a / that is not followed by another /
#=> "http://127.0.0.1:9292/blog/A-lovely-day-654790"