【问题标题】:storing the longest string after strsplit在strsplit之后存储最长的字符串
【发布时间】:2016-12-19 23:46:19
【问题描述】:

在使用函数 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 的非单例右轴维度比非单例下标多

我做错了什么,有什么建议可以解决吗?

【问题讨论】:

  • 您是否检查过 y 的尺寸是否符合您的预期? yValues 是元胞数组还是矩阵?

标签: arrays matlab strsplit


【解决方案1】:

问题在于y 是一个元胞数组,每个元素都包含整个字符串,因此不能将它分配给普通数组yvalues(1,j) 中的单个元素。 p>

你需要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};

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-03-02
    • 1970-01-01
    • 2019-08-22
    • 1970-01-01
    • 2012-09-27
    • 2016-06-18
    • 1970-01-01
    • 2015-12-30
    相关资源
    最近更新 更多