Arrays 存储strsplit之后的最长字符串

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

我试图在使用函数strsplit后存储最长的结果字符串,但无法这样做

我有输入字符串,比如 “R.DQDEGNFRFPTNAVSMSADENSPFDLSNEDGAVYQRD.L”或 “L.Tsnkeeqrellkaisnld”

我只需要将字符串存储在点之间(.) 如果没有点,那么我想要整个字符串。 每个字符串可以有零个、一个或两个点

我正在使用的部分代码:

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值是单元格数组还是矩阵?