【问题标题】:MATLAB function to find the last word in stringMATLAB函数查找字符串中的最后一个单词
【发布时间】:2016-10-16 16:10:39
【问题描述】:

我正在寻找一个代码来查找 lastWord(line) 形式的字符串中的最后一个单词,例如,

line = 'hi how are you'
ans = 'you'

line = 'dog'
ans = 'dog'

到目前为止我已经得到了这个代码:

function finalword = lastWord(line)
    a = strfind(line, '');
    if ~strfind(line, '')
    finalword = line;
    return; 
    end
    lastSpacePlace = a(length(a));
    finalwordFirstIndex = lastSpacePlace + 1;
    finalword = line(finalwordFirstIndex:finalwordLastIndex); 
end 

但我在 lastSpacePlace = a(length(a)) 处不断收到错误,我不知道为什么。任何帮助是极大的赞赏!

编辑:好的,所以我修改了我的代码并最终得到了这个: 函数 last = lastWord(line) allSpaces = findstr('', line); k = 长度(所有空间); 最后=线(所有空间(k-1):所有空间(k)-1); 结束

当我输入任何短语时,由于某种原因,我仍然在第 (4) 行收到错误。请帮我看看哪里出错了

【问题讨论】:

    标签: string matlab function


    【解决方案1】:

    一个可能的解决方案:

    line = 'hi how are you'
    line(find(line==' ',1,'last')+1:end)
    

    找到最后一个空格,从那个点到结尾是最后一个单词。

    【讨论】:

      【解决方案2】:

      首先,由于您没有为我们提供完整的错误消息,因此不清楚您的代码的直接问题是什么。但是一个直接的问题是,您永远不会找到带有 strfind 的空格,因为您使用的是空字符串 '' 而不是空格 (' ')。

      话虽如此,我只是使用strsplit 将输入拆分为单词元胞数组,然后返回最后一个单词。

      parts = strsplit(line);
      last_word = parts{end};
      

      另一个不错的选择是使用正则表达式来获取最后一个单词。以下表达式匹配行尾的所有非空格字符。

      last_word = regexp(line, '\<\w+$', 'match', 'once');
      

      【讨论】:

      • @henberry 看起来您没有尝试过我的任何建议。你试试这些怎么样
      猜你喜欢
      • 1970-01-01
      • 2016-08-17
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-05-07
      • 2021-01-22
      • 1970-01-01
      相关资源
      最近更新 更多