Se per "caratteri speciali" Vuoi dire meno frequentemente utilizzati Unicode personaggi come ¥
, ¶
o ¼
, quindi è possibile utilizzare la funzione REGEXPREP o funzioni di confronto incastonati come ISMEMBER (e si può convertire la stringa di caratteri nel suo codice intero equivalente prima usando la funzione DOUBLE se necessario). Ecco un paio di esempi in cui tutti, ma i personaggi alfabeto inglese standard, (inferiore e maiuscole) vengono rimossi da una stringa:
str = ['ABCDEFabcdefÁÂÃÄÅÆÇÈÉÊËÌÍÎÏÐ']; %# A sample string
str = regexprep(str,'[^a-zA-Z]',''); %# Remove characters using regexprep
str(~ismember(str,['A':'Z' 'a':'z'])) = ''; %# Remove characters using ismember
%# (as suggested by Andrew)
str(~ismember(double(str),[65:90 97:122])) = ''; %# Remove characters based on
%# their integer code
Tutte le opzioni sopra producono lo stesso risultato:
str =
ABCDEFabcdef
EDIT:
in risposta alla esempio specifico nella domanda aggiornato, ecco come è possibile utilizzare REGEXPREP per sostituire tutti carat TER che non sonoa-z
, A-Z
o 0-9
con spazi vuoti:
str = regexprep(str,'[^a-zA-Z0-9]','');
Questo può essere più facile che cercare di scrivere una regex per abbinare ogni singolo carattere "speciale", in quanto ci potrebbero essere potenzialmente molti di loro . Tuttavia, se si dovesse certo che gli unici caratteri speciali sarebbero _
, %
, e !
, questo dovrebbe raggiungere lo stesso come sopra:
str = regexprep(str,'[_%!]','');
Inoltre, come indicato nel commento di Amro, si potrebbe utilizzare anche la funzione ISSTRPROP di sostituire tutti i caratteri non alfanumerici con spazi vuoti in questo modo:
str(~isstrprop(str,'alphanum')) = '';
si può spiegare un po 'più chiaramente che cosa vuoi dire? Forse darci un esempio? –
Cosa intendi per "caratteri speciali"? – gnovice
A seconda di cosa intendessero per "caratteri speciali", potresti voler utilizzare la funzione ISSTRPROP: http://www.mathworks.com/help/techdoc/ref/isstrprop.html Può testare lettere, numeri, spazi, caratteri di controllo, ... – Amro