Подтвердить что ты не робот

Вставка значений переменных в середине строки

В С#: если я хочу создать такое сообщение: "Привет, у нас есть эти рейсы для вас: Flight A, B, C, D. Какой из них вам нужен"

где только жирный раздел является динамическим, и я передаю его значение во время выполнения, но его левая и правая части фиксированы. Я могу создать что-то вроде LeftMessage + эти переменные + RightMessage, чтобы создать это. Но мне было интересно, есть ли способ сделать это сразу, без необходимости создавать два отдельных левых и правых сообщения?

Для целей перевода я помещаю эти левые и правые сообщения внутри строковых ресурсов, поэтому теперь у меня есть два отдельных строковых ресурса. Поэтому я хотел посмотреть, есть ли способ сделать это сразу?

4b9b3361

Ответ 1

Вы можете использовать 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}) на разных языках.

Ответ 2

Там теперь (С# 6, Visual Studio 2015) более лаконичный способ сделать это: строчная интерполяция.

От ответ на другой вопрос:

В С# 6 вы можете использовать строчную интерполяцию:

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

Выделение синтаксиса для этого в Visual Studio делает его очень и все токены проверяются.

Ответ 4

String.Format("Hi We have these flights for you: {0}. Which one do you want",
                              flights);

EDIT: вы даже можете сохранить строку "шаблон" отдельно (например, вы можете сохранить ее в файле конфигурации и получить ее оттуда), например:

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 (но несколько лучше)

Ответ 5

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 Вы можете использовать класс Regex