Click here to Skip to main content
11,412,302 members (62,680 online)
Click here to Skip to main content

Case-Insensitive String Replace

, 25 Jan 2000 CPOL
Rate this:
Please Sign up or sign in to vote.
Function to replace all occurences of a string within another, ignoring the case


This is a simple function that acts like CString::Replace(), except that the case of the string to search for is ignored.

The whole code follows:

// instr:  string to search in.
// oldstr: string to search for, ignoring the case.
// newstr: string replacing the occurrences of oldstr.
CString ReplaceNoCase( LPCTSTR instr, LPCTSTR oldstr, LPCTSTR newstr )
	CString output( instr );

	// lowercase-versions to search in.
	CString input_lower( instr );
	CString oldone_lower( oldstr );

	// search in the lowercase versions,
	// replace in the original-case version.
	int pos=0;
	while ( (pos=input_lower.Find(oldone_lower,pos))!=-1 ) {

		// need for empty "newstr" cases.
		input_lower.Delete( pos, lstrlen(oldstr) );	
		input_lower.Insert( pos, newstr );

		// actually replace.
		output.Delete( pos, lstrlen(oldstr) );
		output.Insert( pos, newstr );

	return output;

The function's implementation is rather simple: it creates several copies of the strings. If you need a memory- and speed- optimized replace function, this one is probably not the best for you. Anyway, in my project, it worked just well.

Please feel free to ask any questions you have by e-mail:


  • 25th January, 2000: Initial post


This article, along with any associated source code and files, is licensed under The Code Project Open License (CPOL)


About the Author

Comments and Discussions

GeneralEndlich !!! Pinmemberplattenbomber15-May-10 2:36 
GeneralRe: Endlich !!! PinmvpUwe Keim15-May-10 3:09 
GeneralMy vote of 1 PinmemberHoria Tudosie24-Nov-09 5:36 
GeneralA more simple alternative... Pinmemberskjpatel30-May-08 5:37 
Questionwhy this code not work in UNICODE,_UNICODE setting? PinmemberPankaj.Jain13-Jun-07 22:46 
GeneralMore Efficient Version Pinmemberpwensing28-Apr-06 9:49 
GeneralThanks for the code PinmemberCode4Food15-Nov-05 18:38 
QuestionIncludes/Namespaces? PinmemberDarth_Sulfur5-Sep-05 15:28 
AnswerRe: Includes/Namespaces? PinmemberChristian Graus5-Sep-05 15:40 
GeneralRe: Includes/Namespaces? PinmemberDarth_Sulfur6-Sep-05 11:09 
GeneralRe: Includes/Namespaces? PinmemberChristian Graus6-Sep-05 12:08 
GeneralRe: Includes/Namespaces? PinmemberDarth_Sulfur7-Sep-05 12:27 
GeneralRe: Includes/Namespaces? PinmemberChristian Graus7-Sep-05 13:47 
GeneralRe: Includes/Namespaces? PinmemberDarth_Sulfur8-Sep-05 14:22 
GeneralRe: Includes/Namespaces? PinmemberChristian Graus8-Sep-05 14:27 
QuestionBug correction? Pinmemberpetermcwerner28-Jul-05 2:35 
AnswerRe: Bug correction? PinmemberAberAber26-Nov-13 19:22 
GeneralBug PinsussPeter Werner27-Jul-05 9:18 
Generalwhy MakeLower() can not work PinmemberDavid 200817-Mar-04 7:30 
GeneralBug PinsussWicket_19-Feb-03 21:53 
GeneralRe: Bug Pinsusswicket_19-Feb-03 21:56 
Generala little optimization PinmemberKarstenK15-Apr-02 22:17 
GeneralRe: a little optimization PinsitebuilderUwe Keim15-Apr-02 22:23 
GeneralGood but a little bit slow PinmemberBraulio Díez22-Nov-01 23:33 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.

| Advertise | Privacy | Terms of Use | Mobile
Web04 | 2.8.150414.5 | Last Updated 26 Jan 2000
Article Copyright 2000 by Uwe Keim
Everything else Copyright © CodeProject, 1999-2015
Layout: fixed | fluid