如果我有三个字符串,例如'Y20194'
, '219Y42'
,'12345'
我如何将它们分解成一个向量,例如[Y 2 0 1 9 4]
,[1 2 3 4 5]
和[2 1 9 Y 4 2]
? 我正在使用str2num
,但我认为在转换为数值之前我错过了一个步骤(首先将字符串中的各个数字分开)。此外,字符读取不正确并且使用str2num
给了我[]。
我有一个带有字符串行的文件,例如上面的那个。我曾经fgetl
将文件的每一行读入字符串,但我有点卡住了。
数字向量中不能同时包含字符和数字。
您可以执行以下操作:
s = 'Y20194';
c = cellstr(s')';
v = str2double(c);
单元格数组c
将所有字符从s
分隔到单个单元格中。请注意,您必须先转置字符串s
。
在向量v
中,第一个值将是 NaN,因为它是一个字符。
字符将被保留。并且数字将被转换为双精度类型。
如果输入不是来自读取文件,则代码如下。result1 是包含所需数组的单元格:
如果输入的是一个文件,我们以这个文件为例:demo1.txt,其内容如下:
将每一行转换为您想要的代码如下。该代码将每一行转换为您想要的,然后显示它。
如果你想用零替换'Y'或其他字母,那么代码如下
如果您想将其更改Y
为0
一个非常简单的解决方案是可用的:
str = 'Y20194';
str(str==Y)='0';
str - '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'),我不希望它完美地工作。
(已经有一段时间了,我的一些索引可能会切换。)