|
7.7 Подскажите как разобрать строку на выражения ? | ☑ | ||
---|---|---|---|---|
0
raykom
22.07.05
✎
14:37
|
Есть строка, например, "Тип,Корреспондент,Пауза", как разобрать ее на отдельные выражения без кавычек и запятых Тип Корреспондент и Пауза. Количество выражений не ограничено. Пройти поставить кавычки перед и после запятой, а потом ИзСтрокиСРазделителями(), громоздко. На более легкую конструкцию не хватает соображалки. :). Кому нетрудно, помогите.
|
|||
1
Ветеран
22.07.05
✎
14:40
|
Комм=СтрЗаменить(Стр,",",РазделительСтрок);
Для Х=1 По СтрКоличествоСтрок(Стр) Цикл Сообщить(СтрПолучитьСтроку(Стр,Х)); ... |
|||
2
Guk
22.07.05
✎
14:40
|
Стр=СтрЗаменить(Стр,",",РазделительСтрок);
Тип=СтрПолучитьСтроку(Стр,1); Корреспондент =СтрПолучитьСтроку(Стр,2); Пауза=СтрПолучитьСтроку(Стр,3); |
|||
3
goodfella
22.07.05
✎
14:44
|
ИзСтрокиСРазделителями(<?>)
Синтаксис: ИзСтрокиСРазделителями(<Строка>) Назначение: Заполняет СписокЗначений значениями из переданной в качестве параметра строки, содержащей разделенные запятыми значения: числа и строки в двойных кавычках. Параметры: <Строка> - символьная строка, в которой значения разделены запятыми. В качестве значений могут быть числа и строковые значения - они записываются в двойных кавычках. |
|||
4
goodfella
22.07.05
✎
14:44
|
Отбой, не дочитал. :(
|
|||
5
Zanuda
22.07.05
✎
14:45
|
//-----------------------------------------------
Функция ОбработкаСтрокиЭлементов(Знач СтрЭлем,Разделитель) Экспорт Список = СоздатьОбъект("СписокЗначений"); Пока СтрДлина(СокрЛП(СтрЭлем)) <> 0 Цикл Если Найти(СокрЛП(СтрЭлем),Разделитель) > 0 Тогда ПС = СокрЛП(Лев(СтрЭлем,Найти(СтрЭлем,Разделитель)-1)); Если СокрЛП(ПС) <> "" Тогда Список.ДобавитьЗначение(ПС,ПС); СтрЭлем = СокрЛП(Прав(СтрЭлем,СтрДлина(СтрЭлем)-Найти(СтрЭлем,ПС)-СтрДлина(ПС))); Иначе СтрЭлем = Прав(СтрЭлем,СтрДлина(СтрЭлем)-1); КонецЕсли; Иначе Список.ДобавитьЗначение(СокрЛП(СтрЭлем),СокрЛП(СтрЭлем)); СтрЭлем = ""; КонецЕсли; КонецЦикла; Возврат Список; КонецФункции Процедура... СтрокаВыражений = "Тип,Корреспондент,Пауза"; Список_ = ОбработкаСтрокиЭлементов(СтрокаВыражений,","); КонецПроцедуры И теперь в списке у тебя отдельные выражения. |
|||
6
raykom
22.07.05
✎
14:56
|
Оч рад, что отозвались:).
По порядку. (1)Почти, как я пробовал. Только здесь изячней меняются запятые на ",". Только потом Надо в Список из СтрокиСРазделителями(). (2)Количество выражений в строке НЕОГРАНИЧЕНО. Тут так не пойдет. (3)Все ясно из Всего вышесказанного. Ступил я чего то. Как в (1) наверное проще всего и в список. Счас накодю. :) Guk, с приездом. Или я опят чего то пропустил ?:)) Спаибо. |
|||
7
Guk
22.07.05
✎
14:58
|
(6) И тебя также. Я как пример показал. Можешь цикл запустить. (1) не видел. Медленный инет...
|
|||
8
raykom
22.07.05
✎
14:58
|
(5)Это хорошо до первой запятой, а потом код вернет все слева до второй запятой и т.д. Или ошибаюсь ?
|
|||
9
Zanuda
22.07.05
✎
15:00
|
Пользуюсь уже года 2. Сделано было потому, что не только запятые в качестве разделителя, бывают и другие символы
|
|||
10
Zanuda
22.07.05
✎
15:01
|
(8) Функция вернет список, в котором будут
Значение 1 Тип Значение 2 Корреспонденция Значение 3 Пауза |
|||
11
raykom
22.07.05
✎
15:01
|
(9) Счас спробую.
|
|||
12
Ветеран
22.07.05
✎
15:02
|
(9) Прикольно тупишь ...
|
|||
13
raykom
22.07.05
✎
15:09
|
Всем спасибо, сделал замену символов как в один, далеее пособсному тексту. С такой оперативной компанией и выпить не грех;)).
|
|||
14
raykom
22.07.05
✎
16:37
|
(0) Во. Работает.:)))
СписокКолонок=СоздатьОбъект("СписокЗначений"); СписокКолонок.УдалитьВсе(); СтрокаКолонок=СтрЗаменить(стрВыводимыеРеквизиты,",",РазделительСтрок); Для СчКол=1 по СтрКоличествоСтрок(СтрокаКолонок) Цикл ИдКол=СтрПолучитьСтроку(СтрокаКолонок,СчКол); тзСсылка.НоваяКолонка(ИдКол,,,,,,,); КонецЦикла; |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |