> Erlang中文手册 > rstr/2 返回字符在字符串里最后一次出现的位置

string:rstr/2

返回字符在字符串里最后一次出现的位置

用法:

rstr(String, SubString) -> Index

内部实现:

-spec rstr(String, SubString) -> Index when
      String :: string(),
      SubString :: string(),
      Index :: non_neg_integer().

rstr(S, Sub) when is_list(Sub) -> rstr(S, Sub, 1, 0).

rstr([C|S], [C|Sub], I, L) ->
    case prefix(Sub, S) of
	true -> rstr(S, [C|Sub], I+1, I);
	false -> rstr(S, [C|Sub], I+1, L)
    end;
rstr([_|S], Sub, I, L) -> rstr(S, Sub, I+1, L);
rstr([], _Sub, _I, L) -> L.

prefix([C|Pre], [C|String]) -> prefix(Pre, String);
prefix([], String) when is_list(String) -> true;
prefix(Pre, String) when is_list(Pre), is_list(String) -> false.

返回字符 SubString 在字符串 String 最后一次出现的位置。

string:rstr("abcbdefg", "b").

如果不存在,则返回 0。

string:rstr("abcdefg", "h").