2009-07-11 3 views
4

Ich verwende System.IO.FIle.ReadAllText(), um den Inhalt einiger Vorlagendateien zu erhalten, die ich für E-Mail-Inhalt erstellt habe. Dann möchte ich ein Ersetzen bestimmter Token in den Dateien vornehmen, damit ich der Vorlage dynamischen Inhalt hinzufügen kann. HierWarum kann ich String.Replace() für eine IO.File.ReadAllText() Zeichenfolge nicht tun?

ist der Code, den ich habe, scheint es mir, wie sollte es gut funktionieren ...

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) 

Aus irgendeinem Grund, den ich nicht die %% LINK bekommen %% und %% name %% Ersetzen() ruft an, um richtig zu arbeiten. Ich überprüfte, ob es mit der Codierung zusammenhing, also habe ich jede Datei UTF-8 erstellt. Und auch die erzwungene Encoding-Überladung von ReadAllText (String, Encoding) und immer noch keine Würfel. Irgendwelche Ideen?

Antwort

13

Das Problem ist, dass Zeichenfolgen in .NET unveränderlich sind. So sollte Ihr Ersetzen-Code wie folgt aussehen:

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! Das war dumm von mir. Danke an alle. – sholsinger

+2

Viele würden argumentieren, dass Replace() eine nicht-statische Funktion sei, dumm von den .NET-Designern, also fühle dich nicht so schlecht ;-) –

+1

Ja, ich denke * jeder * .NET-Entwickler (und auch Java, wenn Ich erinnere mich richtig) lief irgendwann darauf ein. Auch wenn man die Unveränderlichkeit der Saiten genau kennt. Verdammt, ich * * vergesse immer noch manchmal, den Rückgabewert zu verwenden. – JulianR

Verwandte Themen