How to replace a word with another word in a cell array (case insensitive)
    10 views (last 30 days)
  
       Show older comments
    
Hi I am trying to replace words found in a string with a given value (case insensitive)
str = 'lemon lemontea Lemongrass lime';
replaceword = 'lemon' %case insensitive
withthis = {'berry', 'apple', 'flower'};
Assume that we will be given with enough number of words to replace all the occurance of the word
I want to return this:
newstr = 'berry appletea flowergrass lime';
I tried to use strrep but it would replace for Lemon... 
0 Comments
Accepted Answer
  Stephen23
      
      
 on 16 Jul 2020
        
      Edited: Stephen23
      
      
 on 16 Jul 2020
  
      Method one: loop and regexprep:
for k = 1:numel(withthis)
    str = regexprep(str,replaceword,withthis{k},'once','ignorecase');
end
Method two: regexpi and indexing:
>> spl = regexpi(str,replaceword,'split');
>> spl(2,1:end-1) = withthis;
>> str = sprintf('%s',spl{:})
str =
berry appletea flowergrass lime
6 Comments
  Stephen23
      
      
 on 16 Jul 2020
				
      Edited: Stephen23
      
      
 on 16 Jul 2020
  
			Because one of the withthis words includes the very substring that you are replacing you will have to use the second method, for example:
>> replaceword = 'ye';
>> withthis = {'HELLO','BYE','MEOW'};
>> str = fileread('cartiSnapping.txt');
>> spl = regexp(str,replaceword,'split','ignorecase');
>> spl(2,1:end-1) = withthis;
>> str = sprintf('%s',spl{:})
str =
I got a lot on my mind HELLOah
I got a lot on my mind huh BYEah
I got a lot on my mind huh Whoa
She got a lot on her mind ooh
She got a lot on her mind ooh MEOWah
I got a lot on my mind ooh
I got a lot on my mind
and then save to file like I showed earlier.
More Answers (0)
See Also
Categories
				Find more on Characters and Strings in Help Center and File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

