|
|
ru.algorithms- RU.ALGORITHMS ---------------------------------------------------------------- From : Anton Martynov 2:5080/1003 10 Jun 2003 14:57:04 To : Alexander Chelmodeev Subject : Re: TABs -> Spaces -------------------------------------------------------------------------------- "Alexander Chelmodeev" <Alexander.Chelmodeev@p5.f17.n5062.z2.fidonet.org> wrote in message news:1055190549@p5.f17.n5062.z2.fidonet.ftn... > AM> есть файл. текстовый. кое-где в строках встречаются TABы, > AM> которые мне надо преобразовать в пробелы... пользуюсь функцией: > > Function tab2space(s:String; i:integer):string; > begin > result:=copy(s,1,i-1)+copy(' ',1,9-(i mod 8)); > result:=result+copy(s, i+1, maxint); > end; привет... не, александр, это не катит. в твоем примере неаакуратная замена происходит. я сделал так: function ReplaceTabs(s: string): string; var ss: string; i, j: integer; ch: char; SpaceCount, CurrentPosition, NextPosition: integer; Spaces: string; begin Result:=s; if (Pos(#9, s) = 0) then Exit; ss:=''; for i:=1 to Length(s) do begin ch:=s[i]; if (ch = #9) then begin if ((i mod 8) = 0) then begin ss:=ss + ' '; continue; end; if ((i mod 8) <> 0) then begin CurrentPosition:=Length(ss) + 1; NextPosition:=9 - (CurrentPosition mod 8) + CurrentPosition; SpaceCount:=NextPosition - CurrentPosition; Spaces:=''; for j:=1 to SpaceCount do begin Spaces:=Spaces + ' '; end; ss:=ss + Spaces; end; end else begin ss:=ss + ch; end; end; Result:=ss; end; -- enjoy with a poison... injected with a poison ... d909 (ua) --- ifmail v.2.15dev5 * Origin: (http://news.cca.usart.ru/) USURT's FidoNET<-> (2:5080/1003@fidonet) Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.algorithms/146465154ab4a.html, оценка из 5, голосов 10
|