|
разделение строки | ☑ | ||
---|---|---|---|---|
0
r2d24
19.11.13
✎
14:53
|
Написал код. Есть переменная т="Молоко /Молочные изделия /2";
В этой переменной есть два "/". Эти слеши, должны разделить переменную на 3 части, т.е. должно получится "Молоко", "Молочные изделия", "2". Я написал код, который это делает, но работает не так как я хочу. т="Молоко /Молочные изделия /2"; Слеш=0; Пока Найти(т,"/") > 0 Цикл Позиция=Найти(т,"/"); Слеш=Слеш+1; Если Слеш = 1 Тогда т1=Лев(т,Позиция-1); т=Прав(т,СтрДлина(т)-Позиция); Сообщить(т1); ИначеЕсли Слеш = 2 Тогда т2=Лев(т, Позиция-1); т3=Сред(т,Позиция+1); Сообщить(т2); Сообщить(т3); Прервать; КонецЕсли; КонецЦикла; Код работает, но с помощью оператора "Прервать;". Без него все виснет. Для чего я это спрашиваю? Для того, например, если мне нужно будет разделить переменную на большее количество, а значит то все нужно будет делать по другому |
|||
1
GROOVY
19.11.13
✎
15:00
|
Вопрос то в чем?
|
|||
2
vhl
19.11.13
✎
15:01
|
т = СтрЗаменить(т, "/", Символы.ПС);
ЧислоСтрок = СтрЧислоСтрок(т + " "); Для Счетчик = 1 По ЧислоСтрок Цикл Сообщить(СтрПолучитьСтроку(т, Счетчик)); КонецЦикла; |
|||
3
hhhh
19.11.13
✎
15:01
|
(0) ну логически объясните, почему Если Слеш = 2, вы переменную "т" не меняете? Ведь зациклится, мама не горюй.
|
|||
4
Euguln
19.11.13
✎
15:02
|
(0) В типовых есть функция РазложитьСтрокуВМассивПодстрок
зачем изобретать велосипед? |
|||
5
r2d24
19.11.13
✎
15:04
|
(4) я с пр нее ничего не знаю, вот и придумываю велосипед. Даже полезно иногда, я так думаю
|
|||
6
Рэйв
19.11.13
✎
15:06
|
Функция ИзСтрокиСРазделителями(Значение,Разделитель = ",") Экспорт
Если ТипЗнч(Значение)<>Тип("Строка") Тогда Сообщить("Функция ИзСтрокиСРазделителями.Некорректный вызов.Переданное значение должно быть строкой."); Возврат Неопределено; КонецЕсли; спЗначения=Новый СписокЗначений; Если Найти(Значение,Разделитель)=0 Тогда //Сообщить("Функция ИзСтрокиСРазделителями.В переданном значении("""+Значение+""") нет ни одного указанного разделителя("""+Разделитель+""")."); спЗначения.Добавить(Значение); Возврат спЗначения; КонецЕсли; ЗначениеРазбитое=СтрЗаменить(Значение,Разделитель,Символы.ПС); Для н=1 По СтрЧислоСтрок(ЗначениеРазбитое) Цикл спЗначения.Добавить(СтрПолучитьСтроку(ЗначениеРазбитое,н)); КонецЦикла; Возврат спЗначения; КонецФункции//ИзСтрокиСРазделителями |
|||
7
r2d24
19.11.13
✎
15:15
|
Кое что добавил, изменил и теперь все как надо
т="Молоко /Молочные изделия /2 /Товар"; Слеш=0; Пока Найти(т,"/") > 0 Цикл Позиция=Найти(т,"/"); Слеш=Слеш+1; Если Слеш = 1 Тогда т1=Лев(т,Позиция-1); т=Прав(т,СтрДлина(т)-Позиция); Сообщить(т1); ИначеЕсли Слеш = 2 Тогда т2=Лев(т, Позиция-1); т=Прав(т,СтрДлина(т)-Позиция); Сообщить(т2); ИначеЕсли Слеш = 3 Тогда т3=Лев(т,Позиция-1); т=Прав(т,СтрДлина(т)-Позиция); т4=т; Сообщить(т3); Сообщить(т4); КонецЕсли; КонецЦикла; Код полностью работает Спасибо за помощь! |
|||
8
1dvd
19.11.13
✎
15:17
|
(7) вот нахрена тему создавал спрашивается...
|
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |