在delphi中是否有内置函数来查找字符串是否包含子字符串,但最后不是?
例如,假设我有这些字符串:
G15001, G15005, G15015, G14015, G14004, PLU15010, PLU14015
我想在字符串为G15001 G15005,G15015,PLU15010和搜索的子字符串为15时返回true,但在G14015或PLU14015时返回false,因为它们最后只有15。
答案 0 :(得分:5)
使用Pos
检查是否可以找到子字符串。然后检查子串是否位于末尾。
function ContainsBeforeEnd(const str, substr: string): Boolean;
var
P: Integer;
begin
P := Pos(substr, str);
if P = 0 then
// substr not found at all
Result := False
else
// found, now check whether substr is at the end of str
Result := P + Length(substr) - 1 <> Length(str);
end;
答案 1 :(得分:0)
这一个班轮应该能给你你想要的东西:
平面(SUBSTR,复制(STR,1,长度(STR)-1))大于0
大卫的解决方案更清洁,但只想做一个班轮。答案 2 :(得分:0)
更多关于单行的建议:
function ContainsBeforeEnd(const str, substr: string): Boolean;
begin
Result := not (Pos(subStr,Str) in [0,Length(str)-Length(subStr)+1]);
end;
function ContainsBeforeEnd(const str, substr: string): Boolean;
begin // Note, string helpers returns results based on zero based strings
Result := (Length(str) > Length(subStr) and
(str.IndexOf(subStr) in [0..Length(str)-Length(subStr)-1]);
end;