フィルターのクリア

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

27 ビュー (過去 30 日間)
gmltn1212
gmltn1212 2020 年 7 月 16 日
コメント済み: gmltn1212 2020 年 7 月 16 日
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...

採用された回答

Stephen23
Stephen23 2020 年 7 月 16 日
編集済み: Stephen23 2020 年 7 月 16 日
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 件のコメント
Stephen23
Stephen23 2020 年 7 月 16 日
編集済み: Stephen23 2020 年 7 月 16 日
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 2020 年 7 月 16 日
Thank you so much!

サインインしてコメントする。

その他の回答 (0 件)

カテゴリ

Help Center および File ExchangeMatrices and Arrays についてさらに検索

Community Treasure Hunt

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

Start Hunting!

Translated by