如何检查字符串是否包含任何数字?
检查字符串是否包含所有字母的最佳方法是使用isletter命令,但是如何进一步检查字符串中的任何字符是否是数字?
一种方法是将字符串转换为一个字符数组,并交叉检查ascii值是否属于数字。在MATLAB中有更简单的方法来做到这一点吗?
示例字符串:67 Cliston St
发布于 2019-11-21 16:10:49
>> exampleString = "67 Cliston St";
>> any(regexp(exampleString ,'[0-9]'))如果字符串中至少有一个数字,则返回true。
发布于 2019-11-21 16:17:54
这绝不是最好的方法(我相信其他人会有一个更优雅的解决方案)。但这似乎奏效了。
方法:
使用split.
strtrim.
str = '67 Cliston St'
newStr = strtrim(split(str))
idxNum = false(length(newStr),1);
for k =1:length(newStr)
if ~isempty(str2num(newStr{k}))
idxNum(k) = isnumeric(str2num(newStr{k}))
end
end
NumPresent = any(idxNum,true); % returns true if any numerics in the str就像我说的,它不漂亮。其他的答案是优越的。对于'67Cliston St',这将失败,除非您将字符串分解为以下每个字符
newStr = strtrim(split(str,""))这对'67Cliston St'来说是很好的。
计算性能:
将这一答案与其他答案进行比较:
显示了随着字符串长度的增加,isstrprop(str,'digit')要快得多。
https://stackoverflow.com/questions/58979040
复制相似问题