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