Автокликер Clickermann :: Форум
Основной раздел => Общие вопросы => Topic started by: Vlad3 on May 16, 2019, 01:04:03 PM
-
Доброго времени суток, столкнулся с проблемой. Можно ли через STRREPLACE как-то считывать строку с текстового файла и заменять английские "а" на русские "а" в словах, не меняя остальных символов. Например, есть строка в текстовом файле "test string" и мне нужно что бы кликер английскую "е" поменял на русскую "е" и записал в этот или какой-то другой текстовый файл. Возможно ли такое реализовать? Заранее спасибо.
-
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
-
Во втором файле выдает только 3 буквы яюТ и всё. У меня такая же проблема была.
-
Потому, что STRPOS не различает регистр и программа не выходит из цикла. Тоже сначала так сделал и долго искал причину.
При этом STRREPLACE и STRFILTER различают (слава богу, а то бы ппц)
Вот как обошёл.
$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
-
Вопрос, нужно ли задавать изначально англ язык SETKBLAYOUT? А то взял второй код проблема осталась та же(
UPD: изменил, но ошибка осталась..
-
Язык здесь не при чём. Заменил, а применил?
Код я проверял.
-
Применил, с помощью logwrite проверил, работает, но в исходнике вылетает всего 3 буквы..
-
Разобрался.. Скрипт работает, я просто невнимательный. Правда есть нюанс, он заменяет лишь 1 строку в файле, а у меня там их более 5тысяч. Циклом возможно решить эту проблему?
-
Походу не разобрался. В примере
$count = TFCOUNT($filein)
FOR($line=1, $line < ($count+1))
и есть цикл по всем строкам.
-
Взял половину текста с первого файла (2 тыс строк) закинул в тестовый, перевело. Видимо есть ограничение на количество символов.. Спасибо Вам большое!