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

16 vues (au cours des 30 derniers jours)
gmltn1212
gmltn1212 le 16 Juil 2020
Commenté : gmltn1212 le 16 Juil 2020
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...

Réponse acceptée

Stephen23
Stephen23 le 16 Juil 2020
Modifié(e) : Stephen23 le 16 Juil 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 commentaires
Stephen23
Stephen23 le 16 Juil 2020
Modifié(e) : Stephen23 le 16 Juil 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.
gmltn1212
gmltn1212 le 16 Juil 2020
Thank you so much!

Connectez-vous pour commenter.

Plus de réponses (0)

Community Treasure Hunt

Find the treasures in MATLAB Central and discover how the community can help you!

Start Hunting!

Translated by