我正在寻找一个代码,以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)行收到错误。我需要一些关于我出错的地方的帮助
答案 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');