我有以下字符串需要用 rails 中的空字符替换。遵循了许多教程和文档。请帮助我实现这一目标。
细绳:
/home/<someword>/dbdumps/backup.sql
替换为:
backup
我有以下字符串需要用 rails 中的空字符替换。遵循了许多教程和文档。请帮助我实现这一目标。
细绳:
/home/<someword>/dbdumps/backup.sql
替换为:
backup
要从路径中获取文件名,我会使用File#basename
File.basename('/home/<someword>/dbdumps/backup.sql', '.sql')
#=> 'backup'
如果“someword”是唯一改变你甚至不需要正则表达式的东西。认为
path = "/home/<someword>/dbdumps/backup.sql"
然后
path.split("/").last.split(".").first
返回
=> "backup"
最简单的解决方案是 gsub(字符串替换),如下所示:
string = "home/<someword>/dbdumps/backup.sql"
new_string = string.gsub(%r{home/(.*)/dbdumps/backup.sql}, 'backup' )
这是一个字符串替换的简单示例。
在 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
希望这可以帮助