我有任意字符串,应根据其内容转换为适合的数据类型(即标量双精度数,双数组或字符串)。
str2num()
在解释status
返回值时起作用,但函数本身会评估字符串的内容:
str2num('3-7')
成为-4 (double)
,但我想坚持'3-7' (char array)
一种解决方法是使用str2double()
,它不会以双数组结尾,而只会使用标量或字符串。不幸的是,isstrprop()
并不适合这个。
示例输入(和输出):
str2double()
和str2num()
] str2double()
和str2num()
覆盖] str2num()
覆盖] 答案 0 :(得分:1)
使用str2double
和strsplit
:
C = {'123.4','abc','123,456','3-7'};
for ii = 1:numel(C)
CC = strsplit(C{ii},',');
res = [str2double(CC)];
if isnan(res)
res = C{ii};
end
disp(res)
disp(class(res))
disp('****************')
end
所示:
123.4000
double
****************
abc
char
****************
123 456
double
****************
3-7
char
****************
答案 1 :(得分:0)
解决方案(感谢@ user2999345):
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]
[]
[]
结束于
System.Reflection.Emit