注:変数name
は文字列のセル配列だと思います。その場合、変数から文字列を取得するには、 (つまりセルインデックス)の代わりに{}
(つまりコンテンツインデックス)を使用する必要があります...()
MATLABの多くの問題と同様に、これを解決する方法はいくつかあります...
オプション1:関数REGEXPREPを使用できます。以下は、ハイフン、スラッシュ、および空白を削除します。
newName = regexprep(name{i},'[-/\s]','');
ここでの利点は、すべての\s
空白文字に一致して置き換えられることです。これには、通常のスペース(ASCIIコード32)だけでなく、タブ、改行なども含まれます。
安全を確保し、 MATLAB変数/フィールド名で無効なすべての文字を削除したい場合は、上記を次のように簡略化できます。
newName = regexprep(name{i},'\W','');
オプション2:リストした3文字以外のものを削除することを心配する必要がない場合は、次のように関数ISMEMBERを使用できます。
newName = name{i};
newName(ismember(newName,'-/ ')) = [];
オプション3:英数字であるすべてのものを保持し、残り(ハイフン、空白、アンダースコアなど)をダンプしたい場合は、関数ISTSTRPROPを使用できます。
newName = name{i};
newName = newName(isstrprop(newName,'alphanum'));