サンプルスクリプト/二重引用符のエスケープ のバックアップ差分(No.1)


  • 追加された行はこの色です。
  • 削除された行はこの色です。
#contents

* 今日の献立 [#aace10d7]

AviSynth では、文字列を二重引用符(")で囲む形で指定します。このため、そのままでは二重引用符自体を文字列として取り扱うことができません。これは、二重引用符を含む文字列を、引数として指定しなければならない場合に問題となります。

これを回避するためには、2 通りの方法があります。今回は、それぞれの方法を使って、二重引用符を Subtitle フィルタで表示させてみることにします。

* 材料 [#z6e16388]

-Subtitle(AviSynth 内蔵フィルタ)
--二重引用符の表示確認に使用。
-BlankClip(AviSynth 内蔵フィルタ)
--他のビデオ入力フィルタでもよい。

* 作り方 [#obebb06e]

+1 つ目は、二重引用符を 3 つ重ねる方法です。二重引用符を 3 つ重ねると、その間に挟まれた二重引用符は文字列として扱われるようになります。
#code{{
BlankClip(width=320, height=240)
Subtitle("""("Double quotes")""") # 半角の丸括弧は区切りをわかりやすくするため
}}
+2 つ目は、Chr 関数を使う方法です。Chr は、引数として指定されたアスキーコードに対応した文字を、文字列として返します。二重引用符のアスキーコードは 34 なので、使用例は以下のようになります:
#code{{
BlankClip(width=320, height=240)
Subtitle("(" + Chr(34) + "Double quotes" + Chr(34) + ")")
}}
+今回の使用例では、いずれの方法でも同じ結果が得られます。
#ref(double_quotation_mark.png)

* ひとくちメモ: ユーザー定義関数のよくある質問 [#ec848770]

[[FilterRange 関数の「よくある質問」(nullinfo):http://nullinfo.s21.xrea.com/#script]]で取り上げられているのも、今回のレシピと同じケースです。このため、Chr 関数を使って書くことも可能です。

-二重引用符を重ねる
#code{{
LoadPlugin("C:\AviSynth\Plugins\Convolution3D.dll")
AviSource("example_yuy2.avi") # ソース
FilterRange(24, 40, """Convolution3D(preset="movieHQ")""")
}}

-Chr 関数を使う
#code{{
LoadPlugin("C:\AviSynth\Plugins\Convolution3D.dll")
AviSource("example_yuy2.avi") # ソース
FilterRange(24, 40, "Convolution3D(preset=" + Chr(34) + "movieHQ" + Chr(34) + ")")
}}

* 関連レシピ [#w9523bcb]

-ありません。