出于某种原因
size(strfind(n,','))
数字44
是特殊的,并产生逗号找到的结果:
value={55}
numCommas = size(strfind(value{1},','),2)
ans= 0 ...(GOOD)
value={44}
numCommas = size(strfind(value{1},','),2)
ans= 1 ...(BAD) - Why is it doing this?
value={'44,44,44'}
numCommas = size(strfind(value{1},','),2)
ans= 2 ...(GREAT)
我需要在单元格元素中找到逗号的数量,其中元素可以是整数或字符串。
答案 0 :(得分:3)
您只需执行value{1} = '44'
即可避免此问题。或者,如果这不是替代方案,请使用num2str
,如下所示:
value={44};
numCommas = size(strfind(num2str(value{1}),','),2)
numCommas =
0
这也适用于字符串输入:
value={'44,44,44'};
numCommas = size(strfind(num2str(value{1}),','),2)
numCommas =
2
为什么你得到"错误"结果吗?`
这是因为44
是逗号,
的{{3}}。
您可以通过将值转换为ASCII code来非常简单地检查这一点。
char(44)
ans =
,
您正在检查字符串中的逗号。由于strfind的输入是一个整数,它会自动将其转换为char。在最后一个示例中,您正在插入一个真实的"字符串,因此它在那里找到两个逗号。
答案 1 :(得分:3)
详细说明我的评论。逗号的ASCII code(,
)为44.实际上,您在代码中执行的操作是
size(strfind(44,','),2)
或
size(strfind(char(44),','),2)
其中44
不是字符串,但被解释为数值,然后转换为字符并生成逗号(,
),我们在使用时可以看到char
{{3} }}
>> char(44)
ans =
,
您可以通过更改
来修复代码value={44}
到
value={'44'}
因此,您将对字符串而不是数字值执行strfind
。
>> size(strfind('44', ','), 2)
ans =
0
提供了正确的答案。
或者您可以使用num2str
>> size(strfind(num2str(value{1}), ','), 2)
ans =
0
答案 2 :(得分:0)
试试这个:
value={'44'}
numCommas = size(strfind(value{1},','),2)
而不是:
value={44}
numCommas = size(strfind(value{1},','),2)
它应该有用,因为它现在是一个字母。