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

storing the longest string after strsplit

在使用函数 strsplit 后,我​​试图存储最长的结果字符串

例如:我有输入字符串,例如 'R.DQDEGNFRRFPTNAVSMSADENSPFDLSNEDGAVYQRD.L'或 'L.TSNKDEEQRELLKAISNLLD'

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

我正在使用的部分代码:

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 的值,而是显示以下错误:

Assignment has more non-singleton rhs dimensions than non-singleton subscripts

我哪里做错了,有什么解决方法的建议吗?

问题是 y 是一个元胞数组,每个元素都包含 整个字符串 ,因此不能将其分配给正常的单个元素数组 yvalues(1,j).

你需要 yvalues 成为元胞数组,然后你就可以赋值给它了。

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};