Консультация № 111822
01.12.2007, 07:01
0.00 руб.
0 2 2
Здравствуйте
Скопировал я в документ текст, мне надо из этого текста вырезать все email адреса, каждый адрес вырезать вручную это трудоемко и долго.
Подскажите как можно отфильтровать их

Обсуждение

Неизвестный
01.12.2007, 17:12
общий
это ответ
Здравствуйте, Исаак Моисеевич!
Проще всего написать макрос, который работает с выделенным фрагментом текста. В нем воспользоватся функцией SPLIT которая "порежет" текст на куски по заданному разделителю (например пробел). В результате у вас получится массив строковых элементов, который останется просеять на предмет нахождения в нем символа "@" и в зависимости от этого предпринимать дальнейшие действия. Приведенный в приложении макрос (word) работает с выделенным текстом и оставляет от него только адреса email разделенные запятыми. Можно изменить макрос, чтобы он например, писал получившийся список в файл.

Приложение:
Sub SelectMail()Dim str As StringDim mstr() As StringDim i As IntegerDim result As Stringstr = Selection.Textmstr = Split(str)For i = 0 To UBound(mstr) If InStr(1, mstr(i), "@") > 0 Then result = result & mstr(i) & " " End IfNextSelection.Text = resultEnd Sub
Неизвестный
01.12.2007, 21:09
общий
это ответ
Здравствуйте, Исаак Моисеевич!
Можно обойтись и без макроса.
У Word есть возможность проводить поиск (и замену) определенной последовательности символов, при этом поддерживаются подстановочные коды.
В Вашем случае необходимо найти последовательности, представляющие собой email адреса и заменить их на "пусто".
Меню [Правка]-[Заменить], в появившемся диалоговом окне нажимаем кнопку [Больше] и ставим галочку "Подстановочные знаки".
В поле "Найти" пишем выражение
[! ]@\@*([ ^13,])
(после восклицательного знака и перед "крышечкой ^" по одному пробелу)
В поле "Заменить на" ничего пишем \1 (после пишем то выражение, которое нужно подставить вместо email адреса или ничего).
Затем кнопка [Заменить] или [Заменить все].
Поясню, как работает это выражение с подстановочными кодамы.
[! ] означает любой символ, не являющийся пробелом.
@ - символ повторения предыдущего выражения, т.е. [! ]@ означает один или несколько символов, не являющиеся пробелами
\@ - непосредственно символ "@"
* - любая последовательность символов
[ ^13] - пробел или знак абзаца
*[ ^13,] - любая последовательность символов, завершающаяся пробелом, знаком абзаца или запятой.
Круглые скобки позволяют провести замену на часть найденного текста.
\1 в поле "Заменить на" - подставляет те символы, которые в найденной подстроке определены выражением в скобках, т.е. будет подставлены или пробел, или знак абзаца, или запятая.

Подробнее - в справке Word:
F1 - Справка Microsoft Word - Основы работы с документами - Поиск и замена - Поиск и замена текста или других элементов
Форма ответа