Парсинг строки и замена UTF8 символов - Free Pascal
Формулировка задачи:
Здравствуйте. Мучаюсь уже который день.
Необходимо написать программу, которая считывает текст и заменяет в нём все виды кавычек на звёздочку (ASCII 42).
Проблема заключается в том, что когда дело доходит до видов кавычек, которые в строке шифруются как 2 байта или больше, то символы (как кириллицы, так и, например, латышского языка) начинают отображаться некорректно - двумя другими символами из таблицы ascii.
Вот фрагмент кода (Считывание неотфарматированного текста вызов обработки и запись в новый документ):
Проверка на содержание в строке такой кавычки: "«" и её замена:
Подскажите, пожалуйста, что надо исправить чтобы данная кавычка заменялась на звёздочку и текст и символы отображались корректно в текстовом документе. Спасибо.
Листинг программы
- while not eof(f1) do begin
- readln(f1, s);
- for i:=1 to length(s) do begin
- if ord(s[i])>129 then begin
- s1:=chr(ord(s[i]));
- s1:=quotemarks(s,s1,a,i);
- end else s1:=s[i];
- if (ord(s[i])=34 {"}) or (ord(s[i])=39 {'}) or
- (ord(s[i])=42 {*}) or (ord(s[i])=96 {`}) then begin
- s1:=quotemarks(s,s1,a,i);
- end;
- write(f2, s1);
- end;
- writeln(f2, '')
- end;
Листинг программы
- function quotemarks(s,s1:string; a,i:integer):string;
- begin
- if (ord(s[i])=171 {«}) then begin
- quotemarks:=chr(42);
- end else quotemarks:=s1;
- end;
Решение задачи: «Парсинг строки и замена UTF8 символов»
textual
Листинг программы
- repeat
- p:=Pos(Chr($c2)+Chr($ab),s);
- if p=0 then Break;
- Delete(s,p,1); s[p]:='*';
- until False;
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д