delete special characters (\ / : * " < > |) in char

69 ビュー (過去 30 日間)
Alberto Acri
Alberto Acri 2023 年 6 月 25 日
コメント済み: Alberto Acri 2023 年 6 月 26 日
Hi. I need to transform these lines:
name_1 = '<Hello World>';
name_2 ='File numb: 5';
into these:
name_1 = 'Hello World';
name_2 ='File numb 5';
In general, I would like to delete, if they are present, within the name all 8 symbols: \ / : * " < > |

採用された回答

Matt J
Matt J 2023 年 6 月 25 日
One way:
name_1 = '<Hello World>';
pat=num2cell('\/:*"<>|');
name_1=erase(name_1,pat)
name_1 = 'Hello World'

その他の回答 (3 件)

Matt J
Matt J 2023 年 6 月 25 日
編集済み: Matt J 2023 年 6 月 25 日
One way:
name_1 = '<Hello World>';
tf=ismember(name_1, '\/:*"<>|');
name_1(tf)=''
name_1 = 'Hello World'
  1 件のコメント
Alberto Acri
Alberto Acri 2023 年 6 月 26 日
Thank you for your reply. It is as good as the others' answer.

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


Jan
Jan 2023 年 6 月 25 日
name_1 = '<Hello World>';
name_1 = erase(name_1, ["<", ">", "\", "/", ":", "*", """", "|"])
name_1 = 'Hello World'
  1 件のコメント
Alberto Acri
Alberto Acri 2023 年 6 月 26 日
Thank you for your reply. It is as good as the others' answer.

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


DGM
DGM 2023 年 6 月 25 日
編集済み: DGM 2023 年 6 月 25 日
You could also use regexprep(), though perhaps using erase() is more convenient.
% using numbered variables only makes processing more difficult
% instead of embedding implicit indices in the names, just use an array
names = {'<Hello World>';
'File numb: 5';
'1\|2/>3:<4*"5"*6<:7>/8|\9'};
% replace any instance of the listed characters with ''
names = regexprep(names,'[\\/:*"<>|]*','')
names = 3×1 cell array
{'Hello World'} {'File numb 5'} {'123456789' }
  1 件のコメント
Alberto Acri
Alberto Acri 2023 年 6 月 26 日
Thank you for your reply. It is as good as the others' answer.

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

製品


リリース

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by