Замена символов в строке

2 минуты на чтение

Здравствуйте, мне был задан вопрос как получить из кавычек такого «»(кавычки вертикальные) — кавычки такого вида <<>>(кавычки в виде перевернутого треугольника).  Точнее в TMemo отображаются кавычки при загрузке страницы такого вида - «»(кавычки вертикальные), хотя на сайте кавычки такого вида <<>>(кавычки в виде перевернутого треугольника). Может как-то можно настроить TMemo, чтобы отображались кавычки такие как на сайте, а можно попробывать вместо TMemo использовать TRichEdit - по крайней мере у него побольше возможностей. Но если и там не получится, то возможно только, наверное, это замена кавычек вида «» на кавычки вида <<>>. Для этого я предлагаю использовать процедуры

  • ord
  • chr

С помощью процедуры ord мы сможем получить код любого нашего символа, а с помощью процедуры chr мы сможем наш, полученный код, преобразовать в нужный символ, то есть в символ, который расположен под данным кодом.

В TMemo вручную не набрать кавычки вида <<>>. Но надо же узнать код и той и другой кавычки данного вида, чтобы потом заменять их на вид такой «». Как всем известно MS WORD эти кавычки (<<>>) отображает нормально, набираем в MS WORD данные кавычки, а затем просто копируем и тот и другой вид кавычек и вставляем в TRichEdit например и Lines[0] TRichEdit мы записываем в строковую переменную, а затем определяем ord(str(1)), ord(str(2)). То есть в str у нас кавычки <<>>. Соответственно под индексом 1 одна кавычка, под индексом 2 вторая. Результат будет целого типа, то есть выведется код данных символов. Нам необходимо их запомнить, так как мы будем на них заменять с помощью процедуры chr. Для этого на TButton событие OnClick я написал следующий код

procedure TForm1.Button1Click(Sender: TObject);
var
 str:string;
 i,j:integer;
begin
   try
    str:='@$#"привет как дела"""""привет нормально""""""';
    i:=1;
    while (i<=length(str)) do
     begin
      if str[i]='"' then
       begin
        str[i]:=chr(171);
        j:=pos('"',str);
        if j<>0 then
         str[j]:=chr(187);
       end;
      inc(i);
     end;
    ShowMessage(str);
   except
    on e:Exception do
   end;
end;

Если честно не надо было мне менять такие кавычки на такие, и не решал эту проблему я никак, но может как-то можно решить ее по-другому и побыстрее было бы здорово, если бы кто-то подсказал.

Facebook Vk Ok LinkedIn Telegram

Похожие записи:

В первой части нашего урока мы научились создавать файл тестов. Теперь было бы очень логично научиться нам его получать, то есть получать каждый вопрос теста. Тут все просто, так как в каждой строке файла у нас хранится полностью информация о вопросе, то я объ...
В первой части я рассказал, как можно разбить строку на слова, числа, в общем на подстроки, которые находятся между пробелами в строке. Так вот как я уже говорил, первый метод не совсем быстрый и не совсем стабильный. Поэтому я пишу про статью про TParser - эт...
В этой статье, я хотел бы рассказать как можно закрасить определенные ячейки в TStringGrid - определенным цветом, в определенной строке и в определенном столбце. Это довольно часто используется: многие используется данный прием для подчеркивания итоговых данны...