Clear Filters
Clear Filters

How to replace a word with another word in a cell array (case insensitive)

27 views (last 30 days)
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...

Accepted Answer

Stephen23
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
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.

Sign in to comment.

More Answers (0)

Categories

Find more on Matrices and Arrays 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!