Lưu ý: Tôi đoán biến name
của bạn là một mảng di động của chuỗi, trong trường hợp này bạn sẽ muốn sử dụng {}
(tức content indexing) thay vì ()
(tức cell indexing) để có được những chuỗi từ nó .. .
Như với nhiều vấn đề trong MATLAB, có một số cách khác nhau mà bạn có thể giải quyết này ...
Lựa chọn 1: bạn có thể sử dụng chức năng REGEXPREP. Sau đây loại bỏ dấu gạch nối, dấu gạch chéo về phía trước, và khoảng trắng:
newName = regexprep(name{i},'[-/\s]','');
Lợi ích ở đây là \s
sẽ phù hợp và thay thế tất cả ký tự khoảng trắng, trong đó bao gồm một không gian bình thường (mã ASCII 32) cũng như các tab, dòng mới, vv ..
Nếu bạn muốn được an toàn và loại bỏ mỗi nhân vật đó không phải là hợp lệ trong một MATLAB variable/field name, bạn có thể đơn giản hóa việc trên như sau:
newName = regexprep(name{i},'\W','');
Phương án 2: Nếu bạn không cần phải lo lắng về việc loại bỏ bất cứ điều gì khác hơn so với 3 ký tự mà bạn liệt kê, bạn có thể sử dụng chức năng ISMEMBER như vậy:
newName = name{i};
newName(ismember(newName,'-/ ')) = [];
Lựa chọn 3 : Nếu bạn muốn giữ mọi thứ là ký tự chữ và số và bỏ phần còn lại (dấu gạch ngang, khoảng trắng, dấu gạch dưới, v.v.), bạn có thể sử dụng hàm ISSTRPROP:
newName = name{i};
newName = newName(isstrprop(newName,'alphanum'));
Một số người, khi phải đối mặt với một vấn đề, suy nghĩ "Tôi biết, tôi sẽ sử dụng cụm từ thông dụng. " Bây giờ họ có hai vấn đề. :) Nghiêm túc -nice. – Marc
Tôi đã sử dụng regexp và chỉ muốn biết nhân vật hợp pháp là gì, vì vậy không có vấn đề gì mới đối với tôi ... ;-) – sage