C#: String class erweitern oder andere Lösung?
Verfasst: 21.08.2004, 01:42
Hoi alle,
ich habe einen String, der einige Placeholder enthält. In einer Schleife ersetze ich die placeholder mit anderen Strings und setze das Ganze in einen StringBuilder. Derzeit sieht der Code etwa so aus:
-----------
.... loop start...
listCode.Append(forumTemplate.getLoopCode().Replace(
"[forumSubject]", forumSubject).Replace(
stringPlaceholderOne, oneTopic.getReplyCount().ToString()).Replace(
....
etliche weitere replacements
....
"[countViews]", oneTopic.getViewCount().ToString()).Replace(
"[lastPostAuthor]", oneTopic.getLastPostAuthorNick()).Replace(
"[lastPostDate]", oneTopic.getLastPostDateFormatted())
);
... loop end...
-----------
Es gibt dabei folgendes Problem:
Wenn die Variable "stringPlaceholderOne" leer ist (""), dann crasht string.Replace.
Also würde ich gerne so etwas Einfaches wie folgenden Code benutzen:
-----------
static public string replaceInString(string inString, string inFind, string inReplaceWith) {
if (inString.IndexOf(inFind) >= 0) {
return inString.Replace(inFind, inReplaceWith);
} else {
return inString;
}
}
-----------
Das Problem:
Ich müsste dazu immer wieder neue variablen setzten a la:
-----------
newString = replaceInString(newString, ....)
-----------
Das wird aber zu langsam durch die Schleife und die Masse der Replaces.
Daher überlege ich, ob man die string-class nicht einfach um eine eigene Methode erweitern kann?
Also dass string dann alle bisherigen Methoden hat sowie die obige neu dazu?
Wie macht man so etwas oder wie würdet Ihr das lösen (bitte denkt an die Geschwindigkeit!)?
Eigentlich ist es C#, aber da die Syntax zu Java fast gleich ist, hoffe ich, ihr könnt helfen, thx.
Cyall
Smo
ich habe einen String, der einige Placeholder enthält. In einer Schleife ersetze ich die placeholder mit anderen Strings und setze das Ganze in einen StringBuilder. Derzeit sieht der Code etwa so aus:
-----------
.... loop start...
listCode.Append(forumTemplate.getLoopCode().Replace(
"[forumSubject]", forumSubject).Replace(
stringPlaceholderOne, oneTopic.getReplyCount().ToString()).Replace(
....
etliche weitere replacements
....
"[countViews]", oneTopic.getViewCount().ToString()).Replace(
"[lastPostAuthor]", oneTopic.getLastPostAuthorNick()).Replace(
"[lastPostDate]", oneTopic.getLastPostDateFormatted())
);
... loop end...
-----------
Es gibt dabei folgendes Problem:
Wenn die Variable "stringPlaceholderOne" leer ist (""), dann crasht string.Replace.
Also würde ich gerne so etwas Einfaches wie folgenden Code benutzen:
-----------
static public string replaceInString(string inString, string inFind, string inReplaceWith) {
if (inString.IndexOf(inFind) >= 0) {
return inString.Replace(inFind, inReplaceWith);
} else {
return inString;
}
}
-----------
Das Problem:
Ich müsste dazu immer wieder neue variablen setzten a la:
-----------
newString = replaceInString(newString, ....)
-----------
Das wird aber zu langsam durch die Schleife und die Masse der Replaces.
Daher überlege ich, ob man die string-class nicht einfach um eine eigene Methode erweitern kann?
Also dass string dann alle bisherigen Methoden hat sowie die obige neu dazu?
Wie macht man so etwas oder wie würdet Ihr das lösen (bitte denkt an die Geschwindigkeit!)?
Eigentlich ist es C#, aber da die Syntax zu Java fast gleich ist, hoffe ich, ihr könnt helfen, thx.
Cyall
Smo