[解決済み] YAMLです。YAML の文字列には引用符が必要ですか?
2022-03-17 02:29:45
質問
Railsプロジェクトの国際化のために、YAML辞書を書こうとしています。しかし、あるファイルでは文字列がダブルクォートで表示され、あるファイルではダブルクォートで表示されないため、少し混乱しています。検討すべきいくつかのポイントがあります。
- 例1 - はすべてダブルクォーテーションを使用します。
- 例2 - 最後の2つを除いて、引用符を使用していない文字列です。
- は YAMLクックブック は言う。 文字列を二重引用符で囲むと、ASCII文字やUnicode文字をエスケープして表現することができます。 これは、ある文字をエスケープしたいときだけ二重引用符を使えばいいということでしょうか?もしそうなら、なぜ最初の例ではどこでも二重引用符を使うのでしょうか。統一性のため/文体上の理由だけなのでしょうか。
-
例2の最後の2行は
!
- は非特定タグですが、最初の例の最後の2行はそうではなく、どちらも動作します。
私の質問は、YAMLで異なるタイプの引用符を使用するためのルールは何ですか?
といえるのでしょうか。
- 一般に、引用符は必要ありません。
- 文字をエスケープしたい場合は、二重引用符を使用します。
-
使用
!
をシングルクォーテーションで囲むと... ?
解決方法は?
質問で引用されたYAMLクックブックの簡単なレビューといくつかのテストの後、私の解釈は以下のとおりです。
- 一般的には、引用符は必要ありません。
-
引用符は、文字列を強制するために使用します。
10
が、FixnumではなくStringを返したい場合は、次のように記述します。'10'
または"10"
. -
値に特殊文字が含まれる場合は、引用符を使用してください(例.
:
,{
,}
,[
,]
,,
,&
,*
,#
,?
,|
,-
,<
,>
,=
,!
,%
,@
,\
). -
シングルクォートでは、文字列の中にほとんどすべての文字を入れることができ、エスケープコードの解析も行いません。
'\n'
という文字列が返されます。\n
. -
二重引用符はエスケープコードを解析します。
"\n"
は改行文字として返されます。 -
感嘆符はメソッドを紹介するもので、例えば
!ruby/sym
でRubyのシンボルを返します。
必要なとき以外は引用符を使わず、特にエスケープコードを処理したいとき以外はシングルクォートを使うのがベストだと思います。
更新情報
Yes" と "No" は引用符(シングルまたはダブル)で囲む必要があり、さもなければ TrueClass と FalseClass の値として解釈されます。
en:
yesno:
'yes': 'Yes'
'no': 'No'
関連
-
[解決済み] どなたか説明してください - for (int i = 0; i < 8; i++) [closed].
-
[解決済み] パラメータに**(ダブルスター/アスタリスク)、*(スター/アスタリスク)がありますが、これはどういう意味ですか?
-
[解決済み] YAML の文字列を複数行に渡って分割するには?
-
[解決済み] 一重引用符で囲まれた文字列の一重引用符をエスケープするには
-
[解決済み] PHPの文字列で、シングルクオートとダブルクオートの違いは何ですか?
-
[解決済み] YAMLとJSONの違いは何ですか?
-
[解決済み] PythonでYAMLファイルをパースするには?
-
[解決済み] Bashのシングルクォートとダブルクォートの違い
-
[解決済み] MySQLでシングルクォート、ダブルクォート、バックスティックを使用する場合
-
[解決済み】YAMLでブロックコメントを行うには?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] どなたか説明してください - for (int i = 0; i < 8; i++) [closed].
-
[解決済み] twigで文字列を連結する方法
-
[解決済み] PowerShellで"@"マークは何をするのですか?
-
[解決済み] 演算子:=とは何ですか?
-
[解決済み] 文の前の感嘆符(!)は何を意味するのですか?重複
-
[解決済み] YAML の文字列を複数行に渡って分割するには?
-
[解決済み] IFステートメントを使用しているときに、シェルコマンドを複数行に分割するにはどうすればよいですか?
-
[解決済み】YAMLでインジケータ文字(例: : または - )をエスケープする方法
-
[解決済み] 様々な言語のコードをシンタックスハイライトするためのLaTeXパッケージ
-
[解決済み] Kotlin 2次コンストラクタ