1

私のparamsハッシュには次のような文字列値が含まれています:

маслёнка | масло

私のメソッドには現在、次のコードがあります。

s = %Q{(@content "#{params[:structure]}")}

これは文字列全体を引用します:

(@content "маслёнка | масло")

しかし、次のように各要素を個別に引用する必要があります。

(@content "маслёнка" | "масло")

シンボルを介して params 文字列を部分文字列に分割する必要があることはわかっています|が、要素は個別に引用符で囲み、パイプ文字で区切る必要があります。ここでそれを行うにはどうすればよいですか?

4

3 に答える 3

1

分割後に配列要素を引用する

あなたの問題は、見積もり要件の複雑さが原因です。これを解決する 1 つの方法は、Kernel#sprintfと Ruby の代わりの二重引用符リテラル ( %Q) を使用して文字列を作成することです。例えば:

s = sprintf '(@content %s)',
            params[:structure].split( /\s+\|\s+/ ).
            map { |elem| %Q["#{elem}"] }.
            join(" | ")
# => "(@content \"маслёнка\" | \"масло\")"

文字列がKernel#putsで適切にエスケープされていることを確認できます。この場合、次の結果が得られます。

(@content "маслёнка" | "масло")

于 2013-07-29T19:32:27.727 に答える
1
input.split(" | ").map {|s| "\"" + s + "\""}.compact.join(" | ")

あなたが望むものを手に入れます。

于 2013-07-29T19:16:42.217 に答える