具体需求是这样的:
字符串 cmd = "ls ? grep ?" 这是一个shell命令,最后需要执行(system cmd), 先需要替换?为具体的值
有很多的办法,参考一下rails的conditions 实现的办法
和 faye 的日志显示办法
实现自己的方法, code 如下
字符串 cmd = "ls ? grep ?" 这是一个shell命令,最后需要执行(system cmd), 先需要替换?为具体的值
有很多的办法,参考一下rails的conditions 实现的办法
https://github.com/rails/rails/blob/ceb33f84933639d3b61aac62e5e71fd087ab65ed/activerecord/lib/active_record/sanitization.rb#L24
def replace_bind_variables(statement, values) #:nodoc:
raise_if_bind_arity_mismatch(statement, statement.count('?'), values.size)
bound = values.dup
c = connection
statement.gsub('?') { quote_bound_value(bound.shift, c) }
end
和 faye 的日志显示办法
message = message_args.shift.gsub(/\?/) do
Faye.to_json(message_args.shift)
end
实现自己的方法, code 如下
1.9.2p290 :008 > a = [1,2]
=> [1, 2]
1.9.2p290 :009 > cmd.gsub(/\?/) {
1.9.2p290 :010 > a.shift
1.9.2p290 :011?> }