[解決済み] C#のマルチライン補間文字列リテラル
2023-02-13 04:30:51
質問
C# 6 では、構文によって補間された文字列リテラルをコンパイラがサポートするようになりました。
var person = new { Name = "Bob" };
string s = $"Hello, {person.Name}.";
これは短い文字列には最適ですが、長い文字列を生成したい場合は1行で指定しなければならないのでしょうか?
他の種類の文字列なら可能です。
var multi1 = string.Format(@"Height: {0}
Width: {1}
Background: {2}",
height,
width,
background);
または
var multi2 = string.Format(
"Height: {1}{0}" +
"Width: {2}{0}" +
"Background: {3}",
Environment.NewLine,
height,
width,
background);
1行にまとめずに文字列補間で実現する方法はないでしょうか。
var multi3 = $"Height: {height}{Environment.NewLine}Width: {width}{Environment.NewLine}Background: {background}";
この場合は
\r\n
の代わりに
Environment.NewLine
(移植性が低い)、またはローカルに引き出すことができますが、意味的な強さを失うことなく1行以下に減らすことができない場合があります。
単純に、長い文字列には文字列補間を使うべきではない、ということでしょうか。
を使って文字列化すればいいのでしょうか?
StringBuilder
を使うべきでしょうか?
var multi4 = new StringBuilder()
.AppendFormat("Width: {0}", width).AppendLine()
.AppendFormat("Height: {0}", height).AppendLine()
.AppendFormat("Background: {0}", background).AppendLine()
.ToString();
それとも、もっとエレガントなものがあるのでしょうか?
どのように解決するのですか?
以下のように
$
と
@
を組み合わせると、複数行の補間文字列リテラルを得ることができます。
string s =
$@"Height: {height}
Width: {width}
Background: {background}";
出典 C#6での長い文字列の補間行 (おかげさまで リック に感謝します!)
関連
-
[解決済み】ファイルへの読み書きの際に共有違反のIOExceptionが発生する C#
-
[解決済み] JavaScriptで文字列が部分文字列を含むかどうかを確認する方法は?
-
[解決済み] C#のStringとstringの違いは何ですか?
-
[解決済み] JavaでInputStreamを読み込んでStringに変換するにはどうすればよいですか?
-
[解決済み] Pythonには文字列の'contains'サブストリングメソッドがありますか?
-
[解決済み] バイトを文字列に変換する
-
[解決済み] JavaScriptで複数行の文字列を作成する
-
[解決済み] C#のマルチライン文字列リテラル
-
[解決済み】JavaScriptで文字列の出現箇所をすべて置換する方法
-
[解決済み】大文字・小文字を区別しない「Contains(string)
最新
-
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 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み】「入力文字列が正しい形式ではありませんでした」エラーの解決方法は?[重複しています]。
-
[解決済み】値が期待した範囲に収まらない
-
[解決済み] [Solved] アセンブリ System.Web.Extensions dll はどこにありますか?
-
[解決済み] [Solved] 不正な文字列値: '\xEFxBFxBD' for column
-
[解決済み】EF 5 Enable-Migrations : アセンブリにコンテキストタイプが見つかりませんでした
-
[解決済み】MetadataException: 指定されたメタデータ・リソースをロードできない
-
[解決済み】Visual studio 2019がデバッグ時にフリーズする件
-
[解決済み】Moqを使用してメソッド呼び出しを検証する
-
[解決済み】「namespace」なのに「type」のように使われる。
-
[解決済み] C#6 の長い文字列の補間行