0

我有以下字符串需要用 rails 中的空字符替换。遵循了许多教程和文档。请帮助我实现这一目标。

细绳:

/home/<someword>/dbdumps/backup.sql

替换为:

backup
4

4 回答 4

1

要从路径中获取文件名,我会使用File#basename

File.basename('/home/<someword>/dbdumps/backup.sql', '.sql')   
#=> 'backup'
于 2012-12-31T07:09:37.110 回答
0

如果“someword”是唯一改变你甚至不需要正则表达式的东西。认为

path = "/home/<someword>/dbdumps/backup.sql"

然后

path.split("/").last.split(".").first

返回

=> "backup" 
于 2012-12-31T07:06:50.307 回答
0

最简单的解决方案是 gsub(字符串替换),如下所示:

string = "home/<someword>/dbdumps/backup.sql"
new_string = string.gsub(%r{home/(.*)/dbdumps/backup.sql}, 'backup' )

这是一个字符串替换的简单示例。

于 2012-12-31T07:08:08.133 回答
0

在 Rails 应用程序中,我执行 Net:SSH:start() 并运行 ssh.exec!('ls /home/ /dbdumps/ .sql')。我正在将输出发送到一个字符串,然后我必须显示文件列表。为此,我将输出转换为字符串并尝试执行 gsub。这是正确的方法吗?

我不会认为它很漂亮(简单的代码,没有错误检查,带有请求的循环),但这样的事情可以为你完成这项工作。这取决于您是否希望仅使用备份名称或完整路径。

ssh.exec!("ls -l /home/") do |channel, stream, data|
  directories << data if stream == :stdout
end

directories.each do |dir|
  ssh.exec!("ls -l /home/" + dir + "dbdumps") do |channel, stream, data|
    backup_names << /home/" + dir + "/" + data if stream == :stdout
  end 
end

希望这可以帮助

于 2012-12-31T07:39:11.953 回答