55

C# の場合: 次のようなメッセージを作成したい場合: 「こんにちは、これらのフライトがあります:フライト A、B、C、D。どのフライトをご希望ですか?」

太字のセクションだけが動的であり、実行時にその値を渡しますが、左右の部分は固定されています。LeftMessage + これらの変数 + RightMessage のようなものを作成して、これを作成できます。しかし、2 つの別々の左右のメッセージを作成する必要なく、一度にすべてを行う方法があるかどうか疑問に思っていました。

翻訳の目的で、左右のメッセージを文字列リソースに入れているので、2 つの別個の文字列リソースができました。一度にすべてを行う方法はありますか?

4

6 に答える 6

123

これを行うためのより簡潔な方法 (C# 6) があります: 文字列補間です。

別の質問の回答から:

C# 6 では、文字列補間を使用できます。

string name = "John";
string result = $"Hello {name}";

Visual Studio での構文の強調表示により、非常に読みやすくなり、すべてのトークンがチェックされます。

于 2015-09-10T22:50:00.947 に答える
61

使用できますstring.Format

string template = "Hi We have these flights for you: {0}. Which one do you want";
string data = "A, B, C, D";
string message = string.Format(template, data);

templateリソースファイルからロードする必要dataがあり、ランタイム値です。

ただし、複数の言語に翻訳する場合は注意してください。場合によっては、{0}言語ごとに異なるトークン ( ) が必要になります。

于 2012-10-23T15:12:38.890 に答える
35

String.Formatを使用

C# 6.0 より前

string data = "FlightA, B,C,D";
var str = String.Format("Hi We have these flights for you: {0}. Which one do you want?", data);

C# 6.0 --文字列補間

string data = "FlightA, B,C,D";
var str = $"Hi We have these flights for you: {data}. Which one do you want?";

http://www.informit.com/articles/article.aspx?p=2422807

于 2012-10-23T15:12:05.427 に答える
11
String.Format("Hi We have these flights for you: {0}. Which one do you want",
                              flights);

編集: 次のように、「テンプレート」文字列を個別に保存することもできます (たとえば、構成ファイルに保存してそこから取得できます)。

string flights = "Flight A, B,C,D";

string template = @"Hi We have these flights for you: {0}. Which one do you want";
Console.WriteLine(String.Format(template, flights));

EDIT2:おっと、申し訳ありませんが、@DanPuzeyはすでに私のEDITに非常に似たものを提案していました(ただし、多少優れています)

于 2012-10-23T15:11:15.800 に答える
2

1 string.Replaceメソッドを使用できます

var sample = "testtesttesttest#replace#testtesttest";
var result = sample.Replace("#replace#", yourValue);

2 も使えますstring.Format

var result = string.Format("your right part {0} Your left Part", yourValue);

3 正規表現クラスを使用できます

于 2012-10-23T15:11:03.840 に答える