0

御時間ありがとうございます!

私は文字列を取得します、このように見えます:

web_custom_request("pricing_approval",
    "URL=http://loanoriginationci:8080/ro-web/service/pricing/task/list/pricing_approval?uniqueId=1362015883531",
    "Method=GET",
    "Resource=0",
    "RecContentType=text/xml",
    "Referer=http://loanoriginationci:8080/MAUIWeb/MAUIShell.swf/[[DYNAMIC]]/6",
    "Snapshot=t76.inf",
    "Mode=HTTP",
    LAST);

この関数文字列のパラメーターを取得し、それらをさまざまな変数に格納したいと思います。次に、私の頭に浮かぶのは、この文字列をで分割しstring.split(",")、その各部分を取得することです。

ただし、パラメータ内にコンマがある場合は、"Body=xxxx,xxxx",上記の方法が間違っていると言ってください。

それで、それに対処するためのいくつかのエレガントできちんとした方法はありますか?再度、感謝します!

4

2 に答える 2

1

これは、パラメーターを使用して行うことができます。hash以下の例は、キーがローカル変数名であり、値がメソッド呼び出しで渡された値であるaを返します。

def web_custom_request(a,b,c,d,e,f,g,h,i)
  Hash[*method(__method__).parameters.map { |arg| arg[1] }.map { |arg| [arg.to_s, "#{eval arg.to_s}"] }.flatten]
end

h = web_custom_request("pricing_approval",
                       "URL=http://loanoriginationci:8080/ro-web/service/pricing/task/list/pricing_approval?uniqueId=1362015883531",
                       "Method=GET",
                       "Resource=0",
                       "RecContentType=text/xml",
                       "Referer=http://loanoriginationci:8080/MAUIWeb/MAUIShell.swf/[[DYNAMIC]]/6",
                       "Snapshot=t76.inf",
                       "Mode=HTTP",
                       "LAST");

puts h # {"a"=>"pricing_approval", "b"=>"URL=http://loanoriginationci:8080/ro-web/service/pricing/task/list/pricing_approval?uniqueId=1362015883531", "c"=>"Method=GET", "d"=>"Resource=0", "e"=>"RecContentType=text/xml", "f"=>"Referer=http://loanoriginationci:8080/MAUIWeb/MAUIShell.swf/[[DYNAMIC]]/6", "g"=>"Snapshot=t76.inf", "h"=>"Mode=HTTP", "i"=>"LAST"}
于 2013-02-28T06:40:32.377 に答える
0

文字列のフォーマットにもよると思います。

上記のとおりの場合、string.split(区切り文字を指定せずに)使用すると、空白が存在する文字列が分割され、この場合は異なる「パラメーター」の間に自然に収まるため、機能します。

文字列にスペースがまったくない場合、つまり次のようになります。

string = 'web_custom_request("pricing_approval","Method=GET","Body=xxxx,xxxx")'

次に、正規表現を使用して、次のような引用符の間の部分を見つけることができます。string.scan(/"([^"]*)"/)

これにより、次の一致グループが得られます。

[["pricing_approval"], ["Method=GET"], ["Body=xxxx,xxxx"]]
于 2013-02-28T04:34:41.933 に答える