2009-07-11 2 views
4

전자 메일 콘텐츠 용으로 만든 일부 서식 파일의 내용을 가져 오려면 System.IO.FIle.ReadAllText()를 사용하고 있습니다. 그런 다음 동적 콘텐츠를 템플릿에 추가 할 수 있도록 파일 내의 특정 토큰에서 바꾸기를 수행하려고합니다. 여기 IO.File.ReadAllText() 문자열에서 String.Replace()를 사용할 수없는 이유는 무엇입니까?

내가 %% LINK %% 및 %% NAME을 얻을 수없는 어떤 이유
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) 

%% 교체 ... 그냥 잘 작동해야처럼 나에게 것, 내가 가지고있는 코드입니다() 호출이 제대로 작동합니다. 인코딩 관련 사항인지 확인하여 각 파일을 UTF-8로 만들었습니다. 또한 ReadAllText (String, Encoding)의 강제 인코딩 오버로드를 사용했으며 여전히 주사위를 사용하지 않았습니다. 어떤 아이디어?

답변

13

문제는 문자열이 .NET에서 변경되지 않는다는 것입니다. 따라서 Replace 코드는 다음과 같아야합니다.

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

html = html.Replace("%%LINK%%", confirmUrl); 
html = html.Replace("%%NAME%%", person.fname); 
+0

D' oh! 그건 내 바보 같았 어. 모두에게 감사드립니다. – sholsinger

+2

많은 사람들이 Replace()를 비 정적 함수로 사용하는 것이 .NET 디자이너에게는 어리 석다는 것을 주장 할 것이므로 너무 기분이 나쁘지는 않습니다 .-) –

+1

그래, 모든 .NET 개발자와 나는 정확하게 기억한다) 어떤 점에서 이것을 만났다. 심지어 문자열의 불변성을 완전히 알고 있습니다. 지옥, 나 * 여전히 * 때때로 반환 값을 사용하는 것을 잊지 마십시오. – JulianR

관련 문제