Автокликер Clickermann :: Форум

Основной раздел => Общие вопросы => Тема начата: Vlad3 от Май 16, 2019, 01:04:03 pm

Название: Замена символов в текстовом файле
Отправлено: Vlad3 от Май 16, 2019, 01:04:03 pm
Доброго времени суток, столкнулся с проблемой. Можно ли через STRREPLACE как-то считывать строку с текстового файла и заменять английские "а" на русские "а" в словах, не меняя остальных символов. Например, есть строка в текстовом файле "test string" и мне нужно что бы кликер английскую "е" поменял на русскую "е" и записал в этот или какой-то другой текстовый файл. Возможно ли такое реализовать? Заранее спасибо.
Название: Re: Замена символов в текстовом файле
Отправлено: Oraven от Май 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
Название: Re: Замена символов в текстовом файле
Отправлено: Vlad3 от Май 16, 2019, 02:20:24 pm
Во втором файле выдает только 3 буквы яюТ и всё. У меня такая же проблема была.
Название: Re: Замена символов в текстовом файле
Отправлено: Vint от Май 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
Название: Re: Замена символов в текстовом файле
Отправлено: Vlad3 от Май 16, 2019, 02:52:53 pm
Вопрос, нужно ли задавать изначально англ язык SETKBLAYOUT? А то взял второй код проблема осталась та же(
UPD: изменил, но ошибка осталась..
Название: Re: Замена символов в текстовом файле
Отправлено: Vint от Май 16, 2019, 02:59:48 pm
Язык здесь не при чём. Заменил, а применил?
Код я проверял.
Название: Re: Замена символов в текстовом файле
Отправлено: Vlad3 от Май 16, 2019, 03:02:32 pm
Применил, с помощью logwrite проверил, работает, но в исходнике вылетает всего 3 буквы..
Название: Re: Замена символов в текстовом файле
Отправлено: Vlad3 от Май 16, 2019, 03:27:08 pm
Разобрался.. Скрипт работает, я просто невнимательный. Правда есть нюанс, он заменяет лишь 1 строку в файле, а у меня там их более 5тысяч. Циклом возможно решить эту проблему?
Название: Re: Замена символов в текстовом файле
Отправлено: Vint от Май 16, 2019, 03:53:03 pm
Походу не разобрался. В примере
Код: Clickermann
  1. $count = TFCOUNT($filein)
  2. FOR($line=1, $line < ($count+1))
и есть цикл по всем строкам.
Название: Re: Замена символов в текстовом файле
Отправлено: Vlad3 от Май 16, 2019, 04:03:12 pm
Взял половину текста с первого файла (2 тыс строк) закинул в тестовый, перевело. Видимо есть ограничение на количество символов.. Спасибо Вам большое!