?
Hi.
Du hättest da folgende Möglichkeit:
//m_strInput -> eingelesener String, der bearbeitet werden soll
//m_strOutput -> bearbeiteter String, der ausgegeben werden soll
//strSearchString -> String, nach dem gesucht werden soll
//strReplaceString -> String, durch den ersetzt werden soll
//die letzen beiden Strings können z.B. vom User abgefragt werden
m_strOutput = m_strInput;
CString strTemp(m_strInput);//temporäre Kopie des Strings erstellen
if(m_bCaseSensitive) //Falls auf Groß-/Kleinschreibung geachtet werden soll
{
//für die Suche alle Buchstaben in Kleinbuchstaben umwandeln
strTemp.MakeLower();
strSearchString.MakeLower();
}
//Anzahl an zu ersetzenden Wörtern ermitteln
int iStringsFound = strTemp.Replace(strSearchString,strSearchString);
if(iStringsFound)//Wenn Übereinstimmungen gefunden
{
int i=0,
iSearchStringLen = strSearchString.GetLength(),
iReplaceStringLen = strReplaceString.GetLength(),
iPosition=0;
while(i<iStringsFound)
{
//Positionen der gefunden Substrings ermitteln
if(!i)
iPosition = strTemp.Find(strSearchString,0);
else
iPosition = strTemp.Find(strSearchString,iPosition+iSearchStringLen);
//gewünschten String ersetzen...
//(1. Parameter -> Substring aus Originalstring mit Groß- und Kleinbuchstaben)
//(2. Parameter -> String, durch den ersetzt werden soll)
m_strOutput.Replace(m_strOutput.Mid(iPosition+(i*(iReplaceStringLen-iSearchStringLen)),iSearchStringLen), strReplaceString);
i++;
}
}
Wenn du dabei die Variable "bCaseSensitive" auf true setzt, wird zusätzlich bei der Suche auf die Groß- und Kleinschreibung geachtet.
MfG