|
Загрузка из 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) ну я протестил,все перечисленные символы пропускает, остальное вырезает, чего хрень?
|
|
Требовать и эффективности, и гибкости от одной и той же программы — все равно, что искать очаровательную и скромную жену... по-видимому, нам следует остановиться на чем-то одном из двух. Фредерик Брукс-младший