|
Разбор текста на слова | ☑ | ||
---|---|---|---|---|
0
НовыйУчастник Форума
29.10.09
✎
14:33
|
Подскажите, регулярку или может уже кто делал - чтобы из текста только слова получить:
Подскажите регулярку или может уже кто делал чтобы из текста только слова получить |
|||
1
skunk
29.10.09
✎
14:37
|
заменить пробелы разделителем строк... и далее работать как с многострочным текстом
|
|||
2
Живой Ископаемый
29.10.09
✎
14:37
|
(1) +500
|
|||
3
drumandbass
29.10.09
✎
14:38
|
Функция РазложитьСтрокуВМассивПодстрок(Знач Стр, Разделитель = ",") Экспорт
МассивСтрок = Новый Массив(); Если Разделитель = " " Тогда Стр = СокрЛП(Стр); Пока Истина Цикл Поз = Найти(Стр,Разделитель); Если Поз=0 Тогда МассивСтрок.Добавить(Стр); Возврат МассивСтрок; КонецЕсли; МассивСтрок.Добавить(Лев(Стр,Поз-1)); Стр = СокрЛ(Сред(Стр,Поз)); КонецЦикла; Иначе ДлинаРазделителя = СтрДлина(Разделитель); Пока Истина Цикл Поз = Найти(Стр,Разделитель); Если Поз=0 Тогда МассивСтрок.Добавить(Стр); Возврат МассивСтрок; КонецЕсли; МассивСтрок.Добавить(Лев(Стр,Поз-1)); Стр = Сред(Стр,Поз+ДлинаРазделителя); КонецЦикла; КонецЕсли; КонецФункции // глРазложить УПП - ОбщегоН |
|||
4
skunk
29.10.09
✎
14:42
|
// на тот случай если будут двойные пробелы
пока найти(стрТвоя, " ") > 0 цикл стрТвоя = стрзаменить(стрТвоя, " ", " "); конеццикла; стрТвоя = стрзаменить(стрТвоя, Символы.ПС); для х = 1 по СтрЧислоСтрок(стрТвоя) цикл сообщить(СтрПолучитьСтроку(стрТвоя, х)); конеццикла; |
|||
5
skunk
29.10.09
✎
14:43
|
(3)ужас
|
|||
6
hulio_ekb
29.10.09
✎
14:44
|
(1) Еще можно заменить все разделители слов (пробелы, точки, запятые и т.д.) на запятые, а затем просто запихать это в структуру:
Слова = Новый Структура(ИсходнаяСтрока); |
|||
7
НовыйУчастник Форума
29.10.09
✎
14:45
|
(1)(3) угу, спасиб
|
|||
8
НЕА123
29.10.09
✎
14:45
|
МассивСлов = Новый Массив;
Стр = СтрЗаменить(" ",Символы.ПС); Для к = 1 По СтрЧислоСтрок(Стр) Цикл СтрСтр = СтрПолучитьСтроку(Стр, к); Если НЕ ПустаяСтрока(СтрСтр) Тогда МассивСлов.Добавить(СтрСтр); КонецЕсли; КонецЦикла; |
|||
9
НовыйУчастник Форума
29.10.09
✎
14:47
|
(6) ну сбсна меня знаки препинания и волнуют...как от них текст очистить
|
|||
10
НЕА123
29.10.09
✎
14:47
|
(6)
точно. |
|||
11
Живой Ископаемый
29.10.09
✎
14:48
|
2(6) хм.. тоже способ...
|
|||
12
skunk
29.10.09
✎
14:49
|
стрТвоя = стрзаменить(стрТвоя, ".", "");
стрТвоя = стрзаменить(стрТвоя, ",", ""); |
|||
13
НЕА123
29.10.09
✎
14:53
|
(6)
с числами только проблема. но все-равно хороший способ. |
|||
14
hulio_ekb
29.10.09
✎
14:55
|
(13) Ну да, с цифрами косяк, если перед ними нет букв :)
|
|||
15
hulio_ekb
29.10.09
✎
14:56
|
(9) Тебе уже вроде везде писали про функцию "СтрЗаменить()" ;)
|
|||
16
НовыйУчастник Форума
29.10.09
✎
15:03
|
(15) да это ясно...щас попробовал в структуру врубить
Ошибка при вызове конструктора (Структура): Недопустимое значение параметра (параметр номер '1') Структура = Новый Структура(Текст); по причине: Недопустимое значение параметра (параметр номер '1') хотя щас просто обычный текст - Текст получается словами через запятую... |
|||
17
НовыйУчастник Форума
29.10.09
✎
15:05
|
(16) а ну вопщем надо лучше "чистить" строку - тогда все ок
|
|||
18
НовыйУчастник Форума
29.10.09
✎
15:05
|
всем спасибо
|
|||
19
wertyu
29.10.09
✎
15:06
|
Структура = Новый Структура("Текст", Текст); |
|||
20
hulio_ekb
29.10.09
✎
15:10
|
(16) У тебя действительно с параметром что-то не так: либо ты не текст передаешь, либо текст с какими-нибудь символами лишними (должны быть только слова, разделенные запятыми), либо у тебя текст начинается с цифры.
Попробуй даже в табло введи выражение "Новый структура("ПервоеСлово, Слово2")" - возвращается структура |
|||
21
НовыйУчастник Форума
29.10.09
✎
15:19
|
(20) да да все ок, я понял что должно быть все четко...регуляркой бы какой нить текст от символов корректно почистить бы...а то стрзаменить лениво =)
|
|||
22
НЕА123
29.10.09
✎
15:35
|
(21)
СТр= ИсходнаяСтрока; НеБуквоЦифры ="!@#$%^&(*)"; Для к =1 по СтрДлина(НеБуквоЦифры) Цикл Стр = СтрЗаменить(Стр, Сред(НеБуквоЦифры,к,1), " "); КонецЦикла; |
|||
23
Живой Ископаемый
29.10.09
✎
15:45
|
Функция апРазложитьСтрокуВМассивПодстрок(Стр) Экспорт
RegExp = Новый COMОбъект("VBScript.RegExp"); Результат = Новый Массив(); RegExp.IgnoreCase = Ложь; //Игнорировать регистр RegExp.Global = Истина; //Поиск всех вхождений шаблона RegExp.MultiLine = Ложь; //Многострочный режим RegExp.Pattern = "(?:^|;)(\""(?:[^\""]+|\""\"")*\""|[^;]*)"; //вот наш супер шаблон //RegExp.Pattern = ";|;|;|;|;;|;|;|;|;|;|;|;|;;|;|;"; //вот наш супер шаблон Matches=RegExp.Execute(Стр); ЧислоВхождений=Matches.Count(); //Сообщить(Стр,СтатусСообщения.Важное); Если ЧислоВхождений>0 Тогда Для к = 0 По ЧислоВхождений-1 Цикл Match = Matches.Item(к); SubMatches = Match.SubMatches; ЧислоПодвыражений=SubMatches.Count(); Для н = 0 По ЧислоПодвыражений-1 Цикл SubMatch=SubMatches.Item(н); Если SubMatch="" Тогда //Продолжить; КонецЕсли; Результат.Добавить(SubMatch); //Сообщить("Подстрока: "+SubMatch); КонецЦикла; КонецЦикла; Иначе //Сообщить("Вхождений шаблона не найдено"); КонецЕсли; Возврат Результат; КонецФункции Этот РегЕксп раскалдывает строку разделенную точками с запятыми в массив подстрок, при чем например вот такая строка: === ПервоеПоле;"Второе ; поле" === Будет разложена в массив с двумя элементами - первый будет равен "ПервоеПоле" (без кавычек) Второй будет равкн "Второе ; поле" (тоже без кавычек) |
|||
24
bvn13
29.10.09
✎
15:47
|
в закладки
|
|||
25
Лефмихалыч
naïve
29.10.09
✎
15:53
|
(23) а не проще
? |
|||
26
Лефмихалыч
naïve
29.10.09
✎
15:54
|
(25) не проще, это же всего лишь спэйсы, а не пунктуация...
|
Форум | Правила | Описание | Реклама | Секции | Поиск | Книга знаний | Вики-миста |