Delphi:高级字符串搜索命令

时间:2018-08-10 13:30:43

标签: delphi

Kenneth是一个字符串。假设它包含'justabcsome123texthaha'

我已经知道了:

要查找文本:

if(pos('bcsome12',Kenneth) > 0) then

要检查长度:

if(Length('Kenneth') > 10) then
  

问题1:

我想找到'texthaha',但前提是它位于字符串的末尾。

if(pos('texthaha',Kenneth) > 0) then

可悲的是,即使它在中间,也可以在任何地方找到它。有没有简单的方法?

  

问题2:

是否有一种简单的搜索方法,但是带有*(介于两者之间的任何字符)?

例如,如果我想搜索bcsome1*3text,而我却不在意*是什么字符。我认为这被称为通配符,对吗?

if(pos('bcsome1'*'3text',Kenneth) > 0) then

我知道上述方法无效。但是有类似的方法吗? 编辑:可能很重要:**使用的Delphi版本非常旧,不确定该版本,但该年份为2006年。

2 个答案:

答案 0 :(得分:3)

EndsText()单元中有函数EndsStr()StrUtils(不区分大小写)

但是,您可以轻松地用已知的功能提供所需的功能(Pos在最新的Delphi中还带有第三个参数的重载版本):

NPos =  Length(S) - Length(Sub) + 1;
if PosEx(Sub, S, NPos) = NPos then...

或@Sertac Akyuz提出的变体:

if Copy(S, NPos, Length(Sub)) = Sub ...

第二个问题可以通过MatchesMask()之类的函数来解决

 if MatchesMask(Kenneth, '*bcsome1*3text*')...

答案 1 :(得分:-2)

要获得最后一次出现,请尝试LastDelimiter(请参阅help)。有关通配符,请参见此post