比较字符串的最后字符

时间:2014-12-16 15:11:32

标签: string matlab

我需要在matlab中比较字符串的最后一个字符。本地地我会做以下事情:

string = 'foobar';
len_string = length(string);
if len_str_2 >= 3
   str_suffix = str_2(len_str_2 - 2:len_str_2);
   strcmp('bar', str_suffix)
end

有更简单的方法吗?使用strncmp我只能比较第一个n字符。

4 个答案:

答案 0 :(得分:7)

这听起来像是正则表达式的典型工作:

any(regexp('foobar','bar$'))  %% Will return true
any(regexp('foobars','bar$')) %% Will return false

美元符号强制该模式位于字符串的末尾。

答案 1 :(得分:2)

您可以使用end来引用字符串的最后一个字符。

string = 'foobar';

if length(string) >= 3
    matches = strcmp('bar', string(end-2:end))
end

如果删除if语句至关重要,可以使用max,但这对我来说似乎不太合适:

string = 'foobar';
search_str = 'bar';

matches = strcmp(search_str, string(max(end-length(search_str)+1, 1)

答案 2 :(得分:2)

您可以从左向右翻转stringsearch string,然后使用strncmp -

%// Inputs
string = 'foobar'
search_string = 'bar'

out = strncmp(string(end:-1:1),search_string(end:-1:1),numel(search_string))

很少有样本运行 -

(1)原始问题案例

string =
foobar
search_string =
bar
out =
     1

(2)stringsearch_string相同的修改过的案例

string =
bar
search_string =
bar
out =
     1

(3)string长度小于search_stringIF条件

的修改过的案例
string =
ar
search_string =
bar
out =
     0

答案 3 :(得分:2)

后来Matlab有函数endsWith,但由于担心兼容性,我需要一段时间才能开始使用它。

str = 'foobar';
endsWith(str, 'bar') % return logical 1