1. ホーム
  2. string-formatting

[解決済み] Rustのフォーマット文字列で中括弧をエスケープする方法

2023-04-08 12:04:48

質問

こんなことを書きたいのですが

write!(f, "{ hash:{}, subject: {} }", self.hash, self.subject)

しかし、中括弧は書式のための特別な意味を持っているので、エスケープせずに外側の中括弧をそのように配置できないことは明らかです。そこで、エスケープしてみました。

write!(f, "\{ hash:{}, subject: {} \}", self.hash, self.subject)

Rustはそれも嫌がる。それから、これを読みました。

リテラル文字 {, }, # は、その前に \ 文字を置くことで文字列に含めることができます。Rustの文字列の中では、"the \" はすでにエスケープ文字なので、これを使った文字列リテラルは "\{" のように表示されます。

そこで、試しに

write!(f, "\\{ hash:{}, subject: {} \\}", self.hash, self.subject)

しかし、これもうまくいきません :-(

どうすれば解決するのでしょうか?

古いドキュメントを読んでいる可能性があります (例: Rust 0.9 の場合)

Rust 1.0 の時点では をエスケープする方法 {} は別の { または }

write!(f, "{{ hash:{}, subject: {} }}", self.hash, self.subject)

リテラル文字 {} は、文字列の前に同じ文字を置くことで、文字列に含めることができます。 を同じ文字で囲むことができます。例えば { という文字 をエスケープするには {{ となり } の文字がエスケープされます。 }} .