How to ascertain number of special characters in a string?

If there is array containing 5 different strings, how can I ascertain the number of special characters in each separate string?

回答(2 个)

blah = ' This line contains * some & special ( chars_!@#';
idx = regexp(blah, '_|!|\*');
special_count = size(idx, 2);

1 个评论

I would simplify the pattern to '[_!*]' instead of '_|!|\*'
If you do use [] then if you have "-" (dash, minus sign) in the list, ensure that it is either right after the "[" or right before the "[". Also if you include "^" in the list, ensure that it is not right after the "["

请先登录,再进行评论。

s={'abc/d?' 'abcd' 'Abc123\'}
out=cellfun(@numel,regexp(s,'[^a-zA-A0-9]+','match'))

3 个评论

Space is not usually considered to be a "special character". Characters in non-Roman alphabets are not usually considered to be special characters either. For example "é" would normally be considered an alphabetic character rather than a "special character".
s={'abc/d?' ' abé cd' 'Abc123\'}
out=cellfun(@numel,regexp(s,'[^\w\s]+','match'))
\w Any alphabetic, numeric, or underscore character. For English character sets, \w is equivalent to [a-zA-Z_0-9]
Notice that includes underscore.
Also the wording there hints that what \w matches might be locale-dependent, such as LANG=en-CA (Canadian English) perhaps having \w match something different than LANG=en-FR (Canadian French)

请先登录,再进行评论。

类别

帮助中心File Exchange 中查找有关 Characters and Strings 的更多信息

Community Treasure Hunt

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

Start Hunting!

Translated by