Парсинг строки и замена UTF8 символов - Free Pascal

Узнай цену своей работы

Формулировка задачи:

Здравствуйте. Мучаюсь уже который день. Необходимо написать программу, которая считывает текст и заменяет в нём все виды кавычек на звёздочку (ASCII 42). Проблема заключается в том, что когда дело доходит до видов кавычек, которые в строке шифруются как 2 байта или больше, то символы (как кириллицы, так и, например, латышского языка) начинают отображаться некорректно - двумя другими символами из таблицы ascii. Вот фрагмент кода (Считывание неотфарматированного текста вызов обработки и запись в новый документ):
Листинг программы
  1. while not eof(f1) do begin
  2. readln(f1, s);
  3. for i:=1 to length(s) do begin
  4. if ord(s[i])>129 then begin
  5. s1:=chr(ord(s[i]));
  6. s1:=quotemarks(s,s1,a,i);
  7. end else s1:=s[i];
  8. if (ord(s[i])=34 {"}) or (ord(s[i])=39 {'}) or
  9. (ord(s[i])=42 {*}) or (ord(s[i])=96 {`}) then begin
  10. s1:=quotemarks(s,s1,a,i);
  11. end;
  12. write(f2, s1);
  13. end;
  14. writeln(f2, '')
  15. end;
Проверка на содержание в строке такой кавычки: "«" и её замена:
Листинг программы
  1. function quotemarks(s,s1:string; a,i:integer):string;
  2. begin
  3. if (ord(s[i])=171 {«}) then begin
  4. quotemarks:=chr(42);
  5. end else quotemarks:=s1;
  6. end;
Подскажите, пожалуйста, что надо исправить чтобы данная кавычка заменялась на звёздочку и текст и символы отображались корректно в текстовом документе. Спасибо.

Решение задачи: «Парсинг строки и замена UTF8 символов»

textual
Листинг программы
  1. repeat
  2.   p:=Pos(Chr($c2)+Chr($ab),s);
  3.   if p=0 then Break;
  4.   Delete(s,p,1); s[p]:='*';
  5. until False;

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


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

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

8   голосов , оценка 3.625 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы