Автокликер 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 тыс строк) закинул в тестовый, перевело. Видимо есть ограничение на количество символов.. Спасибо Вам большое!