在Matlab R2015中计算字符串中的数字和字符的函数

时间:2015-11-09 08:19:39

标签: matlab function char counting digits

我在单元格中有一个字符串,例如'5a5ac66'。我想计算该字符串中的数字和字符数。

'5a5ac66' = 4位数(5566)和3个字符(aac)

我该怎么做? MATLAB中有什么功能吗?

3 个答案:

答案 0 :(得分:7)

是的,有一个内置函数,isstrprop。它会告诉您哪些字符在给定范围内,例如'digit''alpha'。然后,您可以使用nnz获取此类字符的数量:

str = {'5a5ac66'};
n_digits = nnz(isstrprop(str{1},'digit')); %// digits
n_alpha = nnz(isstrprop(str{1},'alpha')); %// alphabetic

如果你有一个包含多个字符串的单元格数组:

str = {'5a5ac66', '33er5'};
n_digits = cellfun(@nnz, isstrprop(str,'digit')); %// digits
n_alpha = cellfun(@nnz, isstrprop(str,'alpha')); %// alphabetic

答案 1 :(得分:6)

一个简单的(不一定是最佳的)解决方案如下:

digits = sum(x >= '0' & x <= '9');
chars = sum((x >= 'A' & x <= 'Z') | (x >= 'a' & x <= 'z'));

答案 2 :(得分:3)

你可以用正则表达式来做。例如:

s = '5a5ac66';
digit_indices = regexp(s, '\d');  %find all starting indices for a digit
num_digits = length(digit_indices); %number of digits is number of indices

num_chars = length(regexp(s, '[a-zA-Z]'));