我知道以下内容删除了Delphi中有问题的字符串('12345678')中位置3开头的四个字符:
var
Source : string;
begin
Source := '12345678';
delete(Source, 3, 4); // Delete the 3rd, 4th, 5th and 6th characters
ShowMessage('Source now : '+Source);
end;
但是如何删除多个子串呢?例如,如果我想删除2& 3以及5& 6在字符串'12345678'中以获得'1478'。感谢。
答案 0 :(得分:2)
最简单(也可能是最有效)的方法就是两次调用Delete
,首先删除从5开始的两个字符,然后从2开始删除两个字符。(如果你从首先,它改变了其余字符的索引,正如大卫在对问题的评论中指出的那样。
var
Source : string;
begin
Source := '12345678';
Delete(Source, 5, 2);
Delete(Source, 2, 2);
ShowMessage('Source now : '+Source);
end;
@JanLaundsen在对该问题的评论中建议您也可以使用Copy
在一行中执行此操作:
Source := Copy(Source, 1, 1) + Copy(Source, 4, 1) + Copy(Source, 7, MaxInt);
此解决方案有效,但增加了三个函数调用(对Copy
的调用)加上三个临时字符串分配(每个调用Copy
的结果一个)的开销,这些调用不会发生在这两行调用Delete
。 (保存一行代码并不总是最好的解决方案)。国际海事组织,这两个单独的电话也更容易阅读,但这是个人意见。它可能对您不太可读。