Arrays 存储strsplit之后的最长字符串
我试图在使用函数strsplit后存储最长的结果字符串,但无法这样做 我有输入字符串,比如 “R.DQDEGNFRFPTNAVSMSADENSPFDLSNEDGAVYQRD.L”或 “L.Tsnkeeqrellkaisnld” 我只需要将字符串存储在点之间(.) 如果没有点,那么我想要整个字符串。 每个字符串可以有零个、一个或两个点 我正在使用的部分代码:Arrays 存储strsplit之后的最长字符串,arrays,matlab,strsplit,Arrays,Matlab,Strsplit,我试图在使用函数strsplit后存储最长的结果字符串,但无法这样做 我有输入字符串,比如 “R.DQDEGNFRFPTNAVSMSADENSPFDLSNEDGAVYQRD.L”或 “L.Tsnkeeqrellkaisnld” 我只需要将字符串存储在点之间(.) 如果没有点,那么我想要整个字符串。 每个字符串可以有零个、一个或两个点 我正在使用的部分代码: for i=1:700 x=regexprep(txt(i,1), '\([^\(\)]*\)',''); y=(strs
for i=1:700
x=regexprep(txt(i,1), '\([^\(\)]*\)','');
y=(strsplit(char(x),'.'));
for j=1:3
yValues(1,j)=y{1,j};
end
end
但是字符串yValues没有存储y的值,而是显示以下错误:
赋值的非单例rhs维度多于非单例下标
我做错了什么?有没有关于如何修复它的建议?问题是
y
是一个单元格数组,每个元素都包含一个完整的字符串,因此不能将其分配给普通数组中的单个元素yvalues(1,j)
您需要yvalue
作为单元格数组,然后可以很好地分配给它
yValues{j} = y{j};
或者更简单地说
% Outside of your loop
yValues = cell(1,3);
% Then inside of your loop
yValues(j) = y(j);
或者,如果您只需要strsplit的最长输出,您可以这样做
% Split the string
parts = strsplit(mystring, '.');
% Find the length of each piece and figure out which piece was the longest
[~, ind] = max(cellfun(@numel, parts));
% Grab just the longest part
longest = parts{ind};
您是否检查过y的尺寸是否符合预期?Y值是单元格数组还是矩阵?