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

72 visualizzazioni (ultimi 30 giorni)
Alberto Acri
Alberto Acri il 25 Giu 2023
Commentato: Alberto Acri il 26 Giu 2023
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: \ / : * " < > |

Risposta accettata

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

Più risposte (3)

Matt J
Matt J il 25 Giu 2023
Modificato: Matt J il 25 Giu 2023
One way:
name_1 = '<Hello World>';
tf=ismember(name_1, '\/:*"<>|');
name_1(tf)=''
name_1 = 'Hello World'
  1 Commento
Alberto Acri
Alberto Acri il 26 Giu 2023
Thank you for your reply. It is as good as the others' answer.

Accedi per commentare.


Jan
Jan il 25 Giu 2023
name_1 = '<Hello World>';
name_1 = erase(name_1, ["<", ">", "\", "/", ":", "*", """", "|"])
name_1 = 'Hello World'
  1 Commento
Alberto Acri
Alberto Acri il 26 Giu 2023
Thank you for your reply. It is as good as the others' answer.

Accedi per commentare.


DGM
DGM il 25 Giu 2023
Modificato: DGM il 25 Giu 2023
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 Commento
Alberto Acri
Alberto Acri il 26 Giu 2023
Thank you for your reply. It is as good as the others' answer.

Accedi per commentare.

Prodotti


Release

R2021b

Community Treasure Hunt

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

Start Hunting!

Translated by