Почему я не могу сделать String.Replace () для строки IO.File.ReadAllText ()? - PullRequest
4 голосов
/ 11 июля 2009

Я использую System.IO.FIle.ReadAllText (), чтобы получить содержимое некоторых файлов шаблонов, которые я создал для содержимого электронной почты. Затем я хочу заменить некоторые токены в файлах, чтобы добавить в шаблон динамический контент.

Вот код, который у меня есть, мне кажется, он должен работать просто отлично ...

Dim confirmUrl As String = Request.ApplicationPath & "?v=" & reg.AuthKey
Dim text As String = IO.File.ReadAllText( _
   ConfigurationManager.AppSettings("sign_up_confirm_email_text").Replace("~", _
   Request.PhysicalApplicationPath))
Dim html As String = IO.File.ReadAllText( _
   ConfigurationManager.AppSettings("sign_up_confirm_email_html").Replace("~", _
   Request.PhysicalApplicationPath))

text.Replace("%%LINK%%", confirmUrl)
text.Replace("%%NAME%%", person.fname)

html.Replace("%%LINK%%", confirmUrl)
html.Replace("%%NAME%%", person.fname)

По некоторым причинам я не могу заставить вызовы %% LINK %% и %% NAME %% Replace () работать должным образом. Я проверил, связано ли это с кодировкой, поэтому я сделал каждый файл UTF-8. А также использовал принудительную перегрузку кодирования ReadAllText (String, Encoding) и до сих пор не играли в кости. Есть идеи?

1 Ответ

13 голосов
/ 11 июля 2009

Проблема в том, что строки неизменяемы в .NET. Таким образом, ваш код замены должен выглядеть так:

text = text.Replace("%%LINK%%", confirmUrl);
text = text.Replace("%%NAME%%", person.fname);

html = html.Replace("%%LINK%%", confirmUrl);
html = html.Replace("%%NAME%%", person.fname);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...