MATLAB函数查找字符串中的最后一个单词

时间:2016-10-16 16:10:39

标签: string matlab function

我正在寻找一个代码,以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(长度(a))时一直收到错误,我不知道为什么。任何帮助是极大的赞赏!

编辑:好的,所以我修改了我的代码并最终得到了这个:     function last = lastWord(line)     allSpaces = findstr('',line);     k = length(allSpaces);     最后=行(allSpace(K-1):allSpaces(K)-1);     端

当我输入任何短语时,由于某些原因我仍然在第(4)行收到错误。我需要一些关于我出错的地方的帮助

2 个答案:

答案 0 :(得分:1)

可能的解决方案:

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

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

答案 1 :(得分:0)

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

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

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

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

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