Автор Тема: Замена символов в текстовом файле  (Прочитано 194 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Vlad3

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

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Сообщений: 3610
  • Котэ
    • Просмотр профиля
Re: Замена символов в текстовом файле
« Ответ #1 : Май 16, 2019, 01:25:06 pm »
Код: Clickermann
  1. TFREADARR("input.txt", $arr)
  2. FOR($a=0,$a<ARRSIZE($arr))
  3.   WHILE(STRPOS($arr[$a],"e") > 0)
  4.      $arr[$a] = STRREPLACE($arr[$a], "e", "е")
  5.      $arr[$a] = STRREPLACE($arr[$a], "E", "Е")
  6.   END_CYC
  7. END_CYC
  8. TFWRITEARR("output.txt", $arr)
  9.  
  10. HALT

Vlad3

  • Зашел в гости
  • *
  • Сообщений: 12
    • Просмотр профиля
Re: Замена символов в текстовом файле
« Ответ #2 : Май 16, 2019, 02:20:24 pm »
Во втором файле выдает только 3 буквы яюТ и всё. У меня такая же проблема была.

Vint

  • Супермодератор
  • Герой форума
  • *
  • Сообщений: 3322
  • Лечу куда хочу. cman 4.13.014x32, W10, W7
    • Просмотр профиля
Re: Замена символов в текстовом файле
« Ответ #3 : Май 16, 2019, 02:42:41 pm »
Потому, что STRPOS не различает регистр и программа не выходит из цикла. Тоже сначала так сделал и долго искал причину.
При этом STRREPLACE и STRFILTER различают (слава богу, а то бы ппц)

Вот как обошёл.
Код: Clickermann
  1. $filein = "input.txt"
  2. $fileout = "out.txt"
  3.  
  4. SUB(REPL, $si, $so) //==========================================================
  5.    $letter_c = STRLEN(STRFILTER($str, $si, 1))
  6.    FOR($i=0, $i < $letter_c)
  7.        $str = STRREPLACE($str, $si, $so)
  8.    END_CYC    
  9. END_SUB
  10. //==============================================================================
  11.  
  12. $count = TFCOUNT($filein)
  13. FOR($line=1, $line < ($count+1))
  14.    $str = TFREAD($filein, $line)
  15.    //PRINT($line, "  ", $str)
  16.  
  17.    REPL("a", "а")
  18.    REPL("c", "с")
  19.    REPL("e", "е")
  20.    REPL("o", "о")
  21.    REPL("p", "р")
  22.    REPL("x", "х")
  23.    REPL("y", "у")
  24.  
  25.    REPL("A", "А")
  26.    REPL("B", "В")
  27.    REPL("C", "С")
  28.    REPL("H", "Н")
  29.    REPL("K", "К")
  30.    REPL("M", "М")
  31.    REPL("O", "О")
  32.    REPL("P", "Р")
  33.    REPL("T", "Т")
  34.    REPL("X", "Х")
  35.  
  36.    TFWRITE($fileout, $str)
  37. END_CYC
  38.  
  39. HALT


Vlad3

  • Зашел в гости
  • *
  • Сообщений: 12
    • Просмотр профиля
Re: Замена символов в текстовом файле
« Ответ #4 : Май 16, 2019, 02:52:53 pm »
Вопрос, нужно ли задавать изначально англ язык SETKBLAYOUT? А то взял второй код проблема осталась та же(
UPD: изменил, но ошибка осталась..
« Последнее редактирование: Май 16, 2019, 02:55:21 pm от Vlad3 »

Vint

  • Супермодератор
  • Герой форума
  • *
  • Сообщений: 3322
  • Лечу куда хочу. cman 4.13.014x32, W10, W7
    • Просмотр профиля
Re: Замена символов в текстовом файле
« Ответ #5 : Май 16, 2019, 02:59:48 pm »
Язык здесь не при чём. Заменил, а применил?
Код я проверял.


Vlad3

  • Зашел в гости
  • *
  • Сообщений: 12
    • Просмотр профиля
Re: Замена символов в текстовом файле
« Ответ #6 : Май 16, 2019, 03:02:32 pm »
Применил, с помощью logwrite проверил, работает, но в исходнике вылетает всего 3 буквы..

Vlad3

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

Vint

  • Супермодератор
  • Герой форума
  • *
  • Сообщений: 3322
  • Лечу куда хочу. cman 4.13.014x32, W10, W7
    • Просмотр профиля
Re: Замена символов в текстовом файле
« Ответ #8 : Май 16, 2019, 03:53:03 pm »
Походу не разобрался. В примере
Код: Clickermann
  1. $count = TFCOUNT($filein)
  2. FOR($line=1, $line < ($count+1))
и есть цикл по всем строкам.


Vlad3

  • Зашел в гости
  • *
  • Сообщений: 12
    • Просмотр профиля
Re: Замена символов в текстовом файле
« Ответ #9 : Май 16, 2019, 04:03:12 pm »
Взял половину текста с первого файла (2 тыс строк) закинул в тестовый, перевело. Видимо есть ограничение на количество символов.. Спасибо Вам большое!