Not: ondan dizeleri almak için ()
yerine {}
(yani content indexing) kullanmak isteyeceğiniz bu durumda dizeleri bir hücre dizisi (yani cell indexing) sizin değişken name
olduğunu tahmin ediyorum .. .
MATLAB'da pek çok sorunla olduğu gibi, bu çözebilir farklı şekillerde bir dizi ...
Seçenek 1 vardır: sen işlevini kullanabilirsiniz REGEXPREP Aşağıdaki tire, sağa doğru eğik çizgiler ve boşluk kaldırır:
newName = regexprep(name{i},'[-/\s]','');
burada faydası \s
maç ve normal boşluk (ASCII kodu 32) yanı sıra sekmeleri içerir tüm boş karakterleri yerini alacak olmasıdır, yeni satırlar, vb ..
güvende olmak ve kaldırmak istiyorsanız
bir MATLAB variable/field name geçerli olmayan her karakter, bu yukarıdaki kolaylaştırabilirsiniz:
newName = regexprep(name{i},'\W','');
Seçenek 2: Eğer listede 3 karakterden daha başka bir şey kaldırma hakkında endişelenmenize gerek yok, bunu böyle işlevini ISMEMBER kullanabilirsiniz:
newName = name{i};
newName(ismember(newName,'-/ ')) = [];
Seçenek 3 : Yalnızca bir alfanümerik karakter olan her şeyi saklamak ve geri kalanları (tire, boşluk, alt çizgi vb.) Bırakmak istiyorsanız, ISSTRPROP:
işlevini kullanabilirsiniz.
Bazı insanlar, bir sorun ile karşı karşıya kaldıklarında, ben, biliyorum" düşünüyorum: Burada
– MarcZaten regexp kullanıyordum ve sadece yasal karakterlerin ne olduğunu bilmek istedim, bu yüzden benim için yeni bir sorun yok; ;-) – sage