分隔数字和字母并重新排列字符串:可变字母的值不正确



编写函数分隔符

输入:inString——随机字符串标量与数字混合&字母

任务:

  1. 分离数字&信件
  2. 计算数字之和
  3. 计数字母数(计数的空格(

输出:

  • 数字 ,字符串中顺序相同的所有数字的字符串标量
  • 字母 inString中具有相同顺序的所有字母的字符串标量,并且不删除空格
  • 数字之和 ,字符串中所有数字之和的双精度标量
  • 字母数 ,双精度标量,用于计数字符串中的所有字母,计数空白

预期结果:

  • inString:"工程师;

  • 数字:";121314355315465547548645865956";

  • 字母:";工程问题解决";

  • 编号总和:131

  • 信件数量:27

这是我的代码:

function [numbers, letters, sumofNumbers, numberofLetters]=Separator(inString)
%Insert your code here
indexNum = regexp(char(inString), '[0-9]')
numbers = []
for i = 1:numel(indexNum)
numbers = [numbers , inString{1}(indexNum(i))]
end 
% numbers 
numbers = string(numbers)
% sumofNumbers
sumofNumbers = 0
for i = 1:numel(indexNum)
sumofNumbers = sumofNumbers + str2num(numbers{1}(i))
end 

words = split(inString)
letters = []
count = 0
for i = 1:numel(words)
indexLett = regexp(char(words(i)), '[a-z]')
count = count + numel(indexLett)
for j = 1:numel(indexLett)
letters = [letters, words{i}(indexLett(j))]
end
letters = strcat(string(letters), " ")
letters = char(letters)
end
% letters
letters = strip(string(letters))
comb = split(letters)
letters = join(comb)
% number of Literal Letters
numofTrueLetters = count

% numberofLetters
numberofLetters = 0
numberofLetters = strlength(letters)
end 

代码返回完全符合预期:

numbers = 
"12131435531546547548645865956"
letters = 
"engineering problem solving"
sumofNumbers =
131
numberofLetters =
27

然而,MATLAB分级器给出了这样的答案:"变量字母的值不正确">我很困惑。

如果有人能指出错误或错误,我将不胜感激,谢谢!

好吧,我明白了!我修改了这行;[a-z]";现在是";[A-Za-z]";其检查所有大小写的大小写不敏感。

indexLett = regexp(char(words(i)), '[A-Za-z]')

通过这种方式,indexLett将记录具有字母的字符串中的所有索引,而不区分大小写,

所以对于更多像这样的输入

"Apple is good for health" 

"A42pp3113le31 is 31g11oo456d fo442r h105ea422l44t2h" 

可以算作字符串中的大写单词。

相关内容

  • 没有找到相关文章

最新更新