私が持っているとしましょう:
<cfscript>
arrButtons = [
{
"name" = "Add",
"bclass" = "add",
"onpress" = "addItem"
},
{
"name" = "Edit",
"bclass" = "edit",
"onpress" = "editItem"
},
{
"name" = "Delete",
"bclass" = "delete",
"onpress" = "deleteItem"
}
];
jsButtons = SerializeJSON(arrButtons);
// result :
// [{"onpress":"addItem","name":"Add","bclass":"add"},{"onpress":"editItem","name":"Edit","bclass":"edit"},{"onpress":"deleteItem","name":"Delete","bclass":"delete"}]
</cfscript>
すべてのonpress
アイテムについて、JSライブラリの要件に一致するように、値から二重引用符を削除する必要があります(onpressの値はコールバック関数である必要があります)。
正規表現を使用して二重引用符を削除するにはどうすればよいですか?
最終結果は次のようになります。
[{"onpress":addItem,"name":"Add","bclass":"add"},{"onpress":editItem,"name":"Edit","bclass":"edit"},{"onpress":deleteItem,"name":"Delete","bclass":"delete"}]
addItem、editItem、およびdeleteItemを囲む二重引用符はありません。
編集2012-07-13 なぜこれが必要なのですか?結果が多くのファイルで使用されるJSのコレクションになるCFML関数を作成しました。jsButtonオブジェクトは、JSライブラリで使用可能なオプションの一部として使用されます。その関数の引数の1つはstructの配列(デフォルトはarrButtons)であり、指定された引数値はデフォルト値とマージできます。
(CFMLでは)二重引用符なしでonpress値を書き込むことはできないため、その値に二重引用符を追加し、構造体の(CFML)配列をJSON(単なる文字列)に変換して二重引用符を削除する必要がありますJSライブラリオプションに配置する前に。
Railoを使用すると、構造体をリンクされた構造体として宣言して、ループまたは変換に同じ順序のキーがあることを確認できます(上記の例から、構造体の最新のキーを常に押してください)。このリンクされた構造体と同じキー順序を使用すると、単純な置換関数で二重引用符を削除できますが、もちろん、CFML関数を使用するすべてのプログラマーが、上記の例と同じようにリンクされた構造体とキー順序を使用することを忘れないことを保証することはできません。