|
Перебор вхождений подстроки в строку | ☑ | ||
|---|---|---|---|---|
|
0
fierylions
27.03.13
✎
14:30
|
Добрый день коллеги.
Такой вопрос: Если мы используем метод Найти(НашаСтрока,"Что ищем"); то нам возвратится номер найденной строки. Допустим мы ищем слово "Слон". По факту предположим таких слов у нас в строке встречается 3 раза. Так вот как перебрать эти найденные строки без обрезания строки? Когда большие строки на несколько тысяч символов и с разными шумами и признаками которые то добавляются то убираются крайне не удобно искать методом нарезки. Знаю что например в делфи метод найти обходит найденные слова циклом. Может можно как то создать ком объект туда засунуть нашу строку и что мы ищем? Кто то делал ? Хотелось бы что бы это было без использования компонент. Думаю встроенных ком объектов кучу в 1С. У кого то может есть рабочий пример? |
|||
|
1
Wobland
27.03.13
✎
14:34
|
всё не читал. регвыражения подойдут?
|
|||
|
2
mikecool
27.03.13
✎
14:34
|
Встроенные функции языка.СтрЧислоВхождений (Script functions.StrOccurrenceCount)
Встроенные функции языка (Script functions) СтрЧислоВхождений (StrOccurrenceCount) Синтаксис: СтрЧислоВхождений(<Строка>, <ПодстрокаПоиска>) Параметры: <Строка> (обязательный) Тип: Строка. Исходная строка. <ПодстрокаПоиска> (обязательный) Тип: Строка. Искомая подстрока. Возвращаемое значение: Тип: Число. Число вхождений. Описание: Вычисляет число вхождений подстроки поиска в исходной строке. Доступность: Тонкий клиент, веб-клиент, сервер, толстый клиент, внешнее соединение. Пример: Результат = СтрЧислоВхождений(ИсходныйТекст, "Число"); Сообщить("Слово ""Число"" встречается " + Результат + " раз."); |
|||
|
3
fierylions
27.03.13
✎
14:45
|
нашлось решение всем спасибо:
Процедура КнопкаВыполнитьНажатие(Кнопка) RegExp = Новый COMОбъект("VBScript.RegExp"); // Объект для использования регулярных выражений RegExp.IgnoreCase = Истина; //Игнорировать регистр RegExp.Global = Истина; //Поиск всех вхождений шаблона RegExp.MultiLine = Истина; //Многострочный RegExp.Pattern = "слон"; Matches= RegExp.Execute("1слон 2слон 3слон"); ОчиститьСообщения(); Для Сч = 0 по Matches.Count()-1 Цикл Match = Matches.Item(Сч); Сообщить("" + Match.Value+ ""); КонецЦикла; КонецПроцедуры |
| Форум | Правила | Описание | Секции | Поиск |