Matlab 如何确定字符串是否表示整数?

Matlab 如何确定字符串是否表示整数?,matlab,integer,string-comparison,Matlab,Integer,String Comparison,我需要确定一个字符串是否只包含一个整数。内置函数isinteger不工作 为了避免循环,我想在字符串的单元格数组上应用这个任务。 例如: Q = { 'qf5' ; '4' ; 'true' ; 'false' ; '4.00' ; '4E0' ; '4e0' ; '657' }; 预期结果: integers = 0 1 0 0 0 0 0 1 对于单个字符串,我想出了一个难看的解决方法,但我无法想象这是唯一可能的方法,而且它还需要一个循环才能在单元数组上使用它: mySt

我需要确定一个字符串是否只包含一个整数。内置函数
isinteger
不工作

为了避免循环,我想在字符串的单元格数组上应用这个任务。 例如:

Q = { 'qf5' ; '4' ; 'true' ; 'false' ; '4.00' ; '4E0' ; '4e0' ; '657' }; 
预期结果:

integers = 0  1  0  0  0  0  0  1
对于单个字符串,我想出了一个难看的解决方法,但我无法想象这是唯一可能的方法,而且它还需要一个循环才能在单元数组上使用它:

myString = '4';
integer = uint64( str2double( myString ) );
newString = int2str( integer );
isStringInteger = strcmp(newString,myString);
我缺少哪些基本功能?

你可以用它;为了避免您使用的循环:

这将“整数”视为一串数字,可能在开头有一个减号

请注意,带有内置函数的
cellfun
“isempty”非常快。

嗯,字符串不是整数,因此这个问题本身是不正确的。您要检查的是字符串是否是整数的表示形式。
isinteger
函数也不是您想要的,因为它不检查数值变量的实际内容是否为整数,而是检查数据类型是否为整数类型

据我所知,没有内置的方法来检查字符串是否表示整数。实现这种检查的一种方法是查看字符串中的所有字符是否都表示数字:

isintstr = all(myString >= '0') && all(myString <= '9')

isintstr=all(myString>='0')&&all(myString='0')&&all(strtrim(myString)请看一看单字符串的这个选项,这是一个有效的选项,但唯一可能的属性是
digit
,它在很多情况下返回逻辑向量。但对于整数,整个向量仍然是真的,对吧。它不适用于整数>9。我的错误,我应该提到它。@thewaywewalk Oops。忘记了
+
在正则表达式中。对我来说,它现在看起来像愤怒的唐老鸭的语音泡泡,但它工作了!谢谢!@thewaywewalk哈哈哈。这是正则表达式的常见用法。键入
help regexp
如果你想知道并有一些空闲时间:-)与路易斯·门多的答案相同的问题,它不适用于intergers>9。我的错误,我应该提出来的。你的第一句话是对的,我更改了问题的标题。但确实如此!你试过了吗?它查看字符串中的所有字符。路易斯·门多(Luis Mendo)的答案更好,因为它还占了一个前导的
-
,并且做了你想要的单元格数组。啊,是的,我首先误解了你的代码。对于单个字符串,它确实是一个很好的解决方案。
isintstr = all(myString >= '0') && all(myString <= '9')
isintstr = all(strtrim(myString) >= '0') && all(strtrim(myString) <= '9')