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

Основной раздел => Общие вопросы => Topic started by: wireshark on January 16, 2017, 11:07:45 AM

Title: STRFILTER как вырезать в строке символ " ?
Post by: wireshark on January 16, 2017, 11:07:45 AM
Помогите пожалуйста,
Есть текстовый файл откуда беру строки с помощью TOCLIP (TFREAD ("input.txt", $a)), при этом пустые строки интерпретируются как "", те входной файл к примеру
строка1

строка2

на выходе получаем:
строка1
""
строка2

По этой причине хочу их вырезать TOCLIP (STRFILTER (TFREAD ("input.txt", $a),""", 0)) но как понимаете ничего хорошего из """ не получилось.
Подскажите , какую последовательность нужно использовать чтобы вырезать " ?
Title: Re: STRFILTER как вырезать в строке символ " ?
Post by: Oraven on January 16, 2017, 11:30:17 AM
А зачем ты пытаешься отправить в буфер пустоту? Нужно просто пропускать такие строки измеряя их длину
Code: (clickermann) [Select]
FOR($a=1,$a<TFCOUNT("input.txt")+1)
   $str = TFREAD ("input.txt", $a)
   IF(STRLEN($str) > 0)
      TOCLIP($str)
     
     
   END_IF
END_CYC

Title: Re: STRFILTER как вырезать в строке символ " ?
Post by: wireshark on January 16, 2017, 11:39:01 AM
Приходится, иначе  в выходном файле нарушится форматирование, те мне в выходной файл придется писать пустые строки. Хотел более простую конструкцию.
Title: Re: STRFILTER как вырезать в строке символ " ?
Post by: Oraven on January 16, 2017, 12:13:26 PM
Похоже что ты используешь 4.13
В 4.12 такой проблемы нет. Пустая строка не создает ""
Title: Re: STRFILTER как вырезать в строке символ " ?
Post by: wireshark on January 16, 2017, 12:32:08 PM
Ага) 4.13,  4.12 не делает "", но у него кошмар с кодировкой начался, возможно ее надо принудительно задать для 4.12? Пробовал через SETKBLAYOUT(WNDFIND("name", 0), 1049) ничего не вышло, текст сохранял и в UTF-8 и ANSI и Юникоде
Title: Re: STRFILTER как вырезать в строке символ " ?
Post by: Vint on January 16, 2017, 12:42:44 PM
Интересно как ты в Юникоде сохранил  :) но при этом не UTF-8.
До 4.13 кодировка должна быть cp1251 она же Win-1251. ANSI - кодировка системы. Для русского это обычно та же cp1251.
Title: Re: STRFILTER как вырезать в строке символ " ?
Post by: wireshark on January 16, 2017, 12:48:03 PM
Еще раз через notepad++ сделал конвертацию в ansi и сохранил. Пофиг вот, что получаю Ðåàëèòè-øîó.
Title: Re: STRFILTER как вырезать в строке символ " ?
Post by: Vint on January 16, 2017, 01:07:51 PM
Ну так это не cp1251
Title: Re: STRFILTER как вырезать в строке символ " ?
Post by: wireshark on January 16, 2017, 01:09:50 PM
А чем пользовались, что за сервис? Видимо из-за перекодировки из UTF-8 криво конвертировался.
Title: Re: STRFILTER как вырезать в строке символ " ?
Post by: Vint on January 16, 2017, 01:11:06 PM
ANSI будет cp1251 если винда русская и раскладка русская.
В твоей системе стоит ISO-8859-1 - где коды от 160 до 255 содержат символы, используемые в западно-европейских странах.
У тебя с вероятностью 95% стоит для украинского языка.
Title: Re: STRFILTER как вырезать в строке символ " ?
Post by: Vint on January 16, 2017, 01:13:15 PM
А чем пользовались, что за сервис? Видимо из-за перекодировки из UTF-8 криво конвертировался.
http://www.online-decoder.com/ru

Ещё бывает пробую в этих
https://2cyr.com/decode/
https://www.artlebedev.ru/tools/decoder/
Title: Re: STRFILTER как вырезать в строке символ " ?
Post by: wireshark on January 16, 2017, 01:17:39 PM
Спасибо! Сейчас проверил, исходный распознается как UTF-8, хотя в notepad++ указывается как ANSI. Судя по всему проблема в исходном файле.
Title: Re: STRFILTER как вырезать в строке символ " ?
Post by: Vint on January 16, 2017, 01:43:55 PM
У меня были файлы, где Notepad++ неправильно определял и ставил кодировку.
Отключил
Опции -->> Настройки -->> Разное -->>
снять Авто-определение кодировки символов.
Title: Re: STRFILTER как вырезать в строке символ " ?
Post by: wireshark on January 16, 2017, 03:50:35 PM
В общем помучившись с кодировками вернулся на 4.13, поскольку выгрызть "" не получилось, воспользовался советом Oraven и дописал код, но тут ждала засада, 4.13 воспринимает "" пустой строки как 2 символа, пришлось пожертвовать строками с 2 и менее символами, благо таких почти нет.
Code: [Select]
FOR($a=1,$a<TFCOUNT("input.txt")+1)
   $str = TFREAD ("input.txt", $a)
   IF(STRLEN($str) > 2)
      TOCLIP($str)
   ELSE
         STRWRITELN ("output.txt", " ")
   END_IF
END_CYC
Title: Re: STRFILTER как вырезать в строке символ " ?
Post by: Vint on January 16, 2017, 04:21:02 PM
Просто проверь на неравенство двум кавычкам
Code: (clickermann) [Select]
FOR($a=1, $a < TFCOUNT("input.txt")+1)
    $str = TFREAD ("input.txt", $a)   
    IF((STRLEN($str) > 0) & (STRMD5($str) ! "9D4568C009D203AB10E33EA9953A0264"))
        TOCLIP($str)
    ELSE
        STRWRITELN ("output.txt", " ")
    END_IF
END_CYC
Title: Re: STRFILTER как вырезать в строке символ " ?
Post by: wireshark on January 16, 2017, 04:40:30 PM
Хитро, я до этого не додумался, заменить "" на их MD5. Спасибо!
Title: Re: STRFILTER как вырезать в строке символ " ?
Post by: Vint on January 16, 2017, 04:47:21 PM
Прокачаны навыки в костылестроении  ;D ;D