How to replace a string in a table

I have a table test that says
month
--
'January'
'JANUARY'
I want to replace 'JANUARY' by 'January':
month
--
'January'
'January'
I tried strcmp but I got an error message "conversion to cell from char is not possible." Please advise.

 採用された回答

Mara
Mara 2020 年 6 月 18 日
編集済み: Mara 2020 年 6 月 18 日

0 投票

test = table();
test.month = 'JANUARY';
test.month = lower(test.month); %writes it in lower case letters
or you can as well just replace it by your desired input
test.month = 'january';
P.S. You do not have a string but a character (char)

5 件のコメント

alpedhuez
alpedhuez 2020 年 6 月 18 日
編集済み: alpedhuez 2020 年 6 月 18 日
IQ=IQ+1;
Is it possible to have 'January' that is the first letter capital but the followins are lower?
Mara
Mara 2020 年 6 月 18 日
you can index into your character like a normal array: test.month(2:end) = lower(test.month(2:end)), so that the first character is not changed
alpedhuez
alpedhuez 2020 年 6 月 18 日
編集済み: alpedhuez 2020 年 6 月 18 日
It only works for the first row.
Mara
Mara 2020 年 6 月 18 日
編集済み: Mara 2020 年 6 月 18 日
then you have to specify that you want every row:
test.month(:,2:end) = lower(test.month(:,2:end));
alpedhuez
alpedhuez 2020 年 6 月 18 日
編集済み: alpedhuez 2020 年 6 月 18 日
IQ=IQ+1; % Thank you.

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

その他の回答 (1 件)

Deepak Gupta
Deepak Gupta 2020 年 6 月 18 日

0 投票

I am providing a solution, i suspect it's not the ideal solution but it should work.
test = table();
test.month{1} = 'JANUARY';
test.month{2} = 'January';
for index = 1:length(test.month)
if(test.month{index}=='JANUARY')
test.month{index} = 'January';
end
end

1 件のコメント

Mara
Mara 2020 年 6 月 18 日
It depends on whether you have a cell array containing characters or characters solely. From the previous error message that occured ("conversion to cell from char is not possible.") , I concluded, that it is stored as characters only. In which case it does not let you index with curly braces
this worked for me:
test = table();
test.month = {'JANUARY'; 'FEBRUARY'; 'MARCH'}; %cell
test.month = char(test.month); %conversion to character array
test.month(:,2:8) = lower(test.month(:,2:8)); %indexing with normal braces

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

カテゴリ

ヘルプ センター および File ExchangeIntroduction to Installation and Licensing についてさらに検索

製品

リリース

R2020a

タグ

質問済み:

2020 年 6 月 18 日

編集済み:

2020 年 6 月 18 日

Community Treasure Hunt

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

Start Hunting!

Translated by