Author Topic: Замена символов в текстовом файле  (Read 2308 times)

0 Members and 2 Guests are viewing this topic.

Vlad3

  • Зашел в гости
  • *
  • Posts: 12
    • View Profile
Доброго времени суток, столкнулся с проблемой. Можно ли через STRREPLACE как-то считывать строку с текстового файла и заменять английские "а" на русские "а" в словах, не меняя остальных символов. Например, есть строка в текстовом файле "test string" и мне нужно что бы кликер английскую "е" поменял на русскую "е" и записал в этот или какой-то другой текстовый файл. Возможно ли такое реализовать? Заранее спасибо.

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Замена символов в текстовом файле
« Reply #1 on: May 16, 2019, 01:25:06 PM »
Code: (clickermann) [Select]
TFREADARR("input.txt", $arr)
FOR($a=0,$a<ARRSIZE($arr))
   WHILE(STRPOS($arr[$a],"e") > 0)
      $arr[$a] = STRREPLACE($arr[$a], "e", "е")
      $arr[$a] = STRREPLACE($arr[$a], "E", "Е")
   END_CYC
END_CYC
TFWRITEARR("output.txt", $arr)

HALT

Vlad3

  • Зашел в гости
  • *
  • Posts: 12
    • View Profile
Re: Замена символов в текстовом файле
« Reply #2 on: May 16, 2019, 02:20:24 PM »
Во втором файле выдает только 3 буквы яюТ и всё. У меня такая же проблема была.

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Замена символов в текстовом файле
« Reply #3 on: May 16, 2019, 02:42:41 PM »
Потому, что STRPOS не различает регистр и программа не выходит из цикла. Тоже сначала так сделал и долго искал причину.
При этом STRREPLACE и STRFILTER различают (слава богу, а то бы ппц)

Вот как обошёл.
Code: (clickermann) [Select]
$filein = "input.txt"
$fileout = "out.txt"

SUB(REPL, $si, $so) //==========================================================
    $letter_c = STRLEN(STRFILTER($str, $si, 1))
    FOR($i=0, $i < $letter_c)
        $str = STRREPLACE($str, $si, $so)
    END_CYC   
END_SUB
//==============================================================================

$count = TFCOUNT($filein)
FOR($line=1, $line < ($count+1))
    $str = TFREAD($filein, $line)
    //PRINT($line, "  ", $str)
   
    REPL("a", "а")
    REPL("c", "с")
    REPL("e", "е")
    REPL("o", "о")
    REPL("p", "р")
    REPL("x", "х")
    REPL("y", "у")
   
    REPL("A", "А")
    REPL("B", "В")
    REPL("C", "С")
    REPL("H", "Н")
    REPL("K", "К")
    REPL("M", "М")
    REPL("O", "О")
    REPL("P", "Р")
    REPL("T", "Т")
    REPL("X", "Х")
   
    TFWRITE($fileout, $str)
END_CYC

HALT


Vlad3

  • Зашел в гости
  • *
  • Posts: 12
    • View Profile
Re: Замена символов в текстовом файле
« Reply #4 on: May 16, 2019, 02:52:53 PM »
Вопрос, нужно ли задавать изначально англ язык SETKBLAYOUT? А то взял второй код проблема осталась та же(
UPD: изменил, но ошибка осталась..
« Last Edit: May 16, 2019, 02:55:21 PM by Vlad3 »

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Замена символов в текстовом файле
« Reply #5 on: May 16, 2019, 02:59:48 PM »
Язык здесь не при чём. Заменил, а применил?
Код я проверял.


Vlad3

  • Зашел в гости
  • *
  • Posts: 12
    • View Profile
Re: Замена символов в текстовом файле
« Reply #6 on: May 16, 2019, 03:02:32 PM »
Применил, с помощью logwrite проверил, работает, но в исходнике вылетает всего 3 буквы..

Vlad3

  • Зашел в гости
  • *
  • Posts: 12
    • View Profile
Re: Замена символов в текстовом файле
« Reply #7 on: May 16, 2019, 03:27:08 PM »
Разобрался.. Скрипт работает, я просто невнимательный. Правда есть нюанс, он заменяет лишь 1 строку в файле, а у меня там их более 5тысяч. Циклом возможно решить эту проблему?

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Замена символов в текстовом файле
« Reply #8 on: May 16, 2019, 03:53:03 PM »
Походу не разобрался. В примере
Code: (clickermann) [Select]
$count = TFCOUNT($filein)
FOR($line=1, $line < ($count+1))
и есть цикл по всем строкам.


Vlad3

  • Зашел в гости
  • *
  • Posts: 12
    • View Profile
Re: Замена символов в текстовом файле
« Reply #9 on: May 16, 2019, 04:03:12 PM »
Взял половину текста с первого файла (2 тыс строк) закинул в тестовый, перевело. Видимо есть ограничение на количество символов.. Спасибо Вам большое!