Должны ли мы использовать String.format или String.replace в C #? - PullRequest
0 голосов
/ 23 января 2019

мы пытаемся создать приложение, которое показывает пользовательские сообщения.Вот несколько примеров сообщений:

  • "У вас есть предложение для {PlayerName} от {Offerclub}. Они заплатят {Offer}".
  • "{Offerclub} хотели быкупить {Playername} для {Offer} ".

Мы получаем эти строки из нашей базы данных.(Наша первая попытка состояла в том, чтобы создать класс с различными функциями, который бы возвращал нам строки. Мы использовали интерполяцию строк. Затем мы поняли, что это не очень хороший вариант, потому что пользователи не могут сами создавать содержимое / строки, и мыприходится обновлять наше приложение каждый раз, когда мы создаем еще несколько строк в этом классе.)

Опции, которые мы знаем:

  1. String.format: что-то вроде этого:

    string result = string.Format ("{1} blalbal ...- {2} blabla ... {3}", значение1, значение2, значение3);

Проблема здесь: мы хотим использовать строки с разными позициями ввода, как в наших примерах.Иногда первым является имя игрока, иногда это название клуба ...

String.replace: Мы думали о фиксированных именах заполнителей и затем использовали замену для внесения наших изменений. String Builder: мы думали просто скрыть наши строки.Сначала мы прочитаем их из базы данных и используем String.split для создания массива строк.

Вопросы:

  • Есть ли лучшие варианты?(Мы говорим о некоторых сообщениях. Может быть, несколько сотен сообщений в худшем случае.) Мы бы предпочли использовать String.replace, потому что это звучит как самое простое решение.

Ответы [ 2 ]

0 голосов
/ 24 января 2019

Есть лучший и простой способ сделать эти строки. Вы можете попробовать использовать этот пример:

string result = $"{value1} blalbal...- {value2}blabla... {value3}";

Этот символ "$" позволяет вставлять переменные напрямую.

0 голосов
/ 23 января 2019

Вы можете просто сохранить формат строки в базе данных, порядок переменных не обязательно должен быть согласованным?

База данных SQL

"You have an offer for {0} from {1}. They would pay {2}."
"{1} would like to buy {0} for {2}."

Вы можете даже опустить аргументы, если хотите.

"{1} would like to buy {0}, they would like to discuss pricing."

c #

string format = GetStringFromDatabase(someIdentifier);
string message = String.Format(format, PlayerName, Offerclub, Offer);
...