2015-09-19 5 views
0

Мне нужно сделать строку из текстовой строки взятой из переменных и поместить переменные в строку.Строка TextBox с переменными

textBoxEmailTemplateUT.Text = "The documents are as follows: FileNameHere ► {TotalPanelCountUtah} ► {TotalkWUtah} ► ElectricalUsageOffsetHere InformationAboutTheSystemHere If There are any questions or concerns, please reply to this email. Regards YourNameHere"); 

Предполагается, что это тип шаблона электронной почты после того, как кто-то выполнит несколько расчетов в другом коде (не отображается). {TotalPanelCountUtah} и {TotalkWUtah} являются двойными переменными, которые мне нужно поместить в строку в текстовом поле. Некоторая помощь будет оценена по достоинству.

+1

Посмотрите, как строки форматирования - здесь, например: https://msdn.microsoft.com/en-us/library/system.string.format(v=vs.110).aspx. Ваша строка имеет имена заполнителей и string.Format любит номера. – Clay

+0

Также рассмотрите возможность написания специального метода построителя текста (с использованием 'StringBuilder'), если вы хотите лучше контролировать форматирование и планируете получать длинное сообщение для отправки, особенно если ваш код будет использоваться кем-то другим. Мне очень тяжело разбирать длинную строку кода с бесконечными переменными, а иногда и с неясными значениями. –

ответ

0

Использование C# 6, вы можете использовать string interpolation как таковую:

string txt = $"The values are: {value1}, {value2}"; 

Синтаксис требует, чтобы вы положили $ перед строкой и приложить все переменные в фигурные скобки ({}).

без интерполяции строк (предварительно с # 6), вы можете использовать:

string txt = String.Format("The values are: {0}, {1}", value1, value2); 

Этот фрагмент кода делает то же самое, как и первый. String.Format будет форматировать строку, заменяя каждое из значений между фигурными скобками соответствующим аргументом.

Если:

double value1 = 0.5; 
double value2 = 1.5; 

то для обоих фрагментах (интерполяция и string.Format):

txt == "The values are: 0.5, 1.5"` 
+0

Я ценю ответы каждого. Подход $ работал лучше всего для того, что я пытаюсь сделать с этим кодом. Я могу понять String.Format будет невероятно полезен, а также метод .Replace. Мне придется попробовать сыграть с этим больше в более позднее время. На данный момент это получает калькулятор, который я строю для правильной работы. Еще раз спасибо вам, кто вышел помочь! – Sero

0

, как глина, упомянутых в замечании использования string.Format

textBoxEmailTemplateUT.Text = string.Format("The documents are as follows: FileNameHere ► {0} ► {1} ► ElectricalUsageOffsetHere InformationAboutTheSystemHere If There are any questions or concerns, please reply to this email. Regards YourNameHere",TotalPanelCountUtah, TotalkWUtah); 

где TotalPanelCountUtah TotalPanelCountUtah являются двойными типами

0

string.Format, как правило, предпочтительнее, но я включил второй подход, используя string.replace ниже. Вероятно, также неплохо объединить значения перед их отображением.

double val1 = 1.2345; 
double val2 = 8.7654; 

// recommended 
textBox1.Text = string.Format(
    "Value one is {0:0.00}, and value two is {1:0.00}.", 
    val1, val2); 

// also an option 
textBox1.Text = "Value one is val1, and value two is val2." 
    .Replace("val1", Math.Round(val1, 2).ToString()) 
    .Replace("val2", Math.Round(val2, 2).ToString()); 
Смежные вопросы