如果我有三个字符串,例如'Y20194'
,'219Y42'
和'12345'
,我如何将其分解为[Y 2 0 1 9 4]
,[1 2 3 4 5]
这样的向量和[2 1 9 Y 4 2]
?我正在使用str2num
,但我认为在转换为数值之前,我错过了一个步骤(首先将字符串中的各个数字分开)。此外,字符无法正确读取,使用str2num
给我[]。
我有一个带有字符串行的文件,例如上面的字符串。我使用fgetl
将我的文件的每一行读成字符串但是有点困难。
答案 0 :(得分:2)
您不能在数字向量中同时包含字符和数字。
您可以执行以下操作:
s = 'Y20194';
c = cellstr(s')';
v = str2double(c);
单元格数组c
将s
中的所有字符分隔为单个单元格。请注意,您必须首先转置字符串s
。
在向量v
中,第一个值为NaN,因为它是一个字符。
答案 1 :(得分:1)
将保留char。并且数字将转换为双重类型。
如果输入不是来自读取文件,则代码如下。 result1是包含所需数组的单元格:
如果输入是一个文件,我们以此文件为例:demo1.txt,其内容如下:
将每行转换为您想要的代码,如下所示。代码将每行转换为您想要的,然后显示它。
如果要将“Y”或其他字母替换为零,则代码如下:
答案 2 :(得分:0)
也许STRSPLIT会有所帮助。
ts = strsplit('Y20194');
% ts <- {'Y', '2', '0', '1', '9', '4'}
现在你可以尝试使用str2num将向量中的每个元素单独转换为数字。
N = size(ts, 1);
str = cell(1, N);
for i=1:N;
str{i} = str2num(ts{i, 1});
end
但是由于字符串中的某些字符不是数字(例如'Y'),我不希望这完全有效。
(已经有一段时间了,我的一些索引可能会被切换。)
答案 3 :(得分:0)
如果您想将Y
更改为0
,可以使用一个非常简单的解决方案:
str = 'Y20194';
str(str==Y)='0';
str - '0'