删除字符串中的重复文本

时间:2016-11-13 09:33:33

标签: delphi delphi-xe8

我有一些字符串,有这样的文字

str := 'Hi there My name is Vlark and this is my images <img src=""><img src=""> But This images need to be controlled <img src=""><img src=""><img src=""><img src="">'; 

这个字符串有6个图像标签<img我想控制这个标签,所以如果这个字符串有超过3个图像标签,请保留前三个标签并删除其余图像标签。我无法弄清楚我怎么能在编码中做到这一点

1 个答案:

答案 0 :(得分:4)

策略:

  • 查找完整封闭式代码的位置和长度:<img>
  • 如果计数大于3,请删除标记。
function RemoveExcessiveTags( const s: String): String;
var
  tags,cP,p : Integer;
begin
  tags := 0;
  cP := 1;
  Result := s;
  repeat
    cP := Pos('<img',Result,cP);
    if (cP > 0) then begin
     // Find end of tag
      p := Pos('>',Result,cP+4);
      if (p > 0) then begin
        Inc(tags);
        if (tags > 3) then begin // Delete tag if more than 3 tags
          Delete(Result,cP,p-cP+1);
        end
        else
          cP := p+1;  // Next search start position
      end
      else
        cP := 0;  // We reached end of string, abort search
    end;
  until (cP = 0);
end;