我有任意字符串,可以根据它们的内容转换为合适的数据类型(即标量双精度、双精度数组或字符串)。str2num()
在解释status
返回值时完成它的工作,但函数本身评估字符串的内容,其中:
str2num('3-7')
是-4 (double)
,但我想坚持'3-7' (char array)
一种解决方法是使用str2double()
,它不会以双数组结束,而只是标量或字符串。不幸的是,isstrprop()
并不真正适合于此。
示例输入(和输出):
str2double()
和覆盖str2num()
]str2double()
和覆盖str2num()
]str2num()
仅被覆盖]解决方案(感谢@user2999345):
function res = str2impl(str, delimiter)
narginchk(1,2);
if isempty(str)
res = [];
return
end
if nargin < 2
delimiter = ',';
end
splits = strsplit(str, delimiter);
res = str2double(splits);
if any(isnan(res)) & ~strcmpi(str, 'NaN') % NaN not specifically requested
res = str;
end
结束于
C = {'123.4','abc','123,456','3-7','NaN','',[]};
for ii = 1:numel(C)
r{ii,1} = str2impl(C{ii});
end
disp(r)
[ 123.4000]
'abc'
[1×2 double]
'3-7'
[ NaN]
[]
[]
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句