我需要在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
字符。
答案 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)
您可以从左向右翻转string
和search 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)string
与search_string
相同的修改过的案例
string =
bar
search_string =
bar
out =
1
(3)string
长度小于search_string
且IF
条件
string =
ar
search_string =
bar
out =
0
答案 3 :(得分:2)
后来Matlab有函数endsWith
,但由于担心兼容性,我需要一段时间才能开始使用它。
str = 'foobar';
endsWith(str, 'bar') % return logical 1