在 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};
在使用函数 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};