delphi 检查string是否包含子字符串,但不在末尾

vjhs03f7  于 2023-08-04  发布在  其他
关注(0)|答案(3)|浏览(153)

Delphi 中是否有一个内置的函数来查找字符串是否包含子字符串,但在结尾处不是
例如,假设我有这些字符串:

G15001,
G15005,
G15015,
G14015,
G14004,
PLU15010,
PLU14015

字符串
当字符串是G15001 G15005,G15015,PLU15010和子字符串搜索是15时,我想返回true,但当G14015或PLU14015返回false,因为他们只有15在最后。

2nc8po8w

2nc8po8w1#

使用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;

字符串

chhkpiq4

chhkpiq42#

更多建议,重点放在一行程序上:

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;

字符串

uurv41yg

uurv41yg3#

这一个班轮应该给予你你想要的:

Pos(substr,copy(str,1,length(str)-1))>0

字符串
大卫的解决方案更干净,但我只想做一个班轮。

相关问题