Парсинг строки и замена 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;

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 3.625 из 5
Похожие ответы