Имя: Пароль:
1C
1С v8
Загрузка из Excel, как удалить непечатные символы?
, ,
0 SachoZ
 
19.02.13
00:49
Загружаю прайс-лист (ADODB), получаю текст из ячейки:
RecordSet.Fields(1).Value
Как из этого текста удалить непечатные символы (перевод каретки и т.п.) оставить только кириллицу/латиницу/цифры/символы/пробел?
1 Magic Dick
 
19.02.13
00:50
СтрЗаменить
2 GANR
 
19.02.13
00:51
РезультирующийТекст = СтрЗаменить(ИсходныйТекст, НепечатныйСимвол, "");
3 SachoZ
 
19.02.13
01:07
(1)(2) а не так банально?
4 HeroShima
 
19.02.13
01:13
regexp
5 SachoZ
 
19.02.13
01:21
Написал такое:

Функция ОчиститьТекст(стр) Экспорт

   RegExp = Новый COMОбъект("VBScript.RegExp");
   
   RegExp.IgnoreCase   = Истина; //Игнорировать регистр
   RegExp.Global       = Истина; //Поиск всех вхождений шаблона
   RegExp.MultiLine    = Истина; //Многострочный режим
   
   RegExp.Pattern      = "![^\w\d\s]*!";    
   стр                 = СокрЛП(RegExp.Replace(стр, ""));
   Если стр = "" Тогда
       Возврат 0;
   КонецЕсли;
   стр = СтрЗаменить(стр,Символы.ПС, " ");
   стр = СтрЗаменить(стр,Символы.Таб, "");
   стр = СтрЗаменить(стр,Символы.НПП, " ");
   стр = СтрЗаменить(стр,Символы.ВК, "");
   стр = СтрЗаменить(стр,Символы.ПФ, " ");
   стр = СтрЗаменить(стр,"  ", " ");
   Возврат СокрЛП(стр);    
   
КонецФункции
6 HeroShima
 
19.02.13
01:23
а СтрЗаменить тогда зачем?
7 SachoZ
 
19.02.13
01:23
Верней так:
Функция ОчиститьТекст(стр) Экспорт
   RegExp = Новый COMОбъект("VBScript.RegExp");
   
   RegExp.IgnoreCase   = Истина; //Игнорировать регистр
   RegExp.Global       = Истина; //Поиск всех вхождений шаблона
   RegExp.MultiLine    = Истина; //Многострочный режим
   
   RegExp.Pattern      = "![^\w\d\s]*!";    
   стр                 = RegExp.Replace(стр, "");
   стр = СтрЗаменить(стр,Символы.ПС,    " ");
   стр = СтрЗаменить(стр,Символы.Таб,    " ");
   стр = СтрЗаменить(стр,Символы.НПП,    " ");
   стр = СтрЗаменить(стр,Символы.ВК,    " ");
   стр = СтрЗаменить(стр,Символы.ПФ,    " ");
   стр = СтрЗаменить(стр,"  ",        " ");
   Возврат СокрЛП(стр);    
   
КонецФункции
8 SachoZ
 
19.02.13
01:24
(6) надо удалить символы перевода каретки шаблон \s их пропускает, а другого как обозначить проблеы не знаю.
9 HeroShima
 
19.02.13
01:35
по-моему у тебя регулярка неправильно составлена
10 SachoZ
 
19.02.13
02:05
ну да регулярка пропускала ненужные мне символы, переделал в такую:
RegExp.Pattern      = "[^АБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЬЫЭЮЯЇЄҐІabcdefghijklmnopqrstuvwxyz\s%~`!@#$%^&*()+>,<.?/-_|0987654321\\':;""]";
11 HeroShima
 
19.02.13
02:47
всё равно хрень
12 SachoZ
 
19.02.13
11:05
(11) ну я протестил,все перечисленные символы пропускает, остальное вырезает, чего хрень?
Программист всегда исправляет последнюю ошибку.