|
Разложить строку | ☑ | ||
---|---|---|---|---|
0
мистер игрек
07.09.11
✎
09:46
|
Например есть строка - "Иванов;Петров;Сидоров"
Надо их конвертировать в список значений или массив типа: Иванов Петров Сидоров В семерке есть встроенная функция для разложения, а в восьмерке есть? |
|||
1
ZanderZ
07.09.11
✎
09:47
|
напишешь будет
|
|||
2
abitfrosty
07.09.11
✎
09:48
|
Встроенной нет, типовая - есть.
|
|||
3
andrewks
07.09.11
✎
09:48
|
замени ; на Символы.ПС
|
|||
4
Wobland
07.09.11
✎
09:49
|
многострочную строку не предлагали ещё?
|
|||
5
YurOK_51
07.09.11
✎
09:49
|
// Функция "расщепляет" строку на подстроки, используя заданный
// разделитель. Разделитель может иметь любую длину. // Если в качестве разделителя задан пробел, рядом стоящие пробелы // считаются одним разделителем, а ведущие и хвостовые пробелы параметра Стр // игнорируются. // Например, // РазложитьСтрокуВМассивПодстрок(",ку,,,му", ",") возвратит массив значений из пяти элементов, // три из которых - пустые строки, а // РазложитьСтрокуВМассивПодстрок(" ку му", " ") возвратит массив значений из двух элементов // // Параметры: // Стр - строка, которую необходимо разложить на подстроки. // Параметр передается по значению. // Разделитель - строка-разделитель, по умолчанию - запятая. // // // Возвращаемое значение: // массив значений, элементы которого - подстроки // Функция РазложитьСтрокуВМассивПодстрок(Знач Стр, Разделитель = ",") Экспорт МассивСтрок = Новый Массив(); Если Разделитель = " " Тогда Стр = СокрЛП(Стр); Пока 1=1 Цикл Поз = Найти(Стр,Разделитель); Если Поз=0 Тогда МассивСтрок.Добавить(Стр); Возврат МассивСтрок; КонецЕсли; МассивСтрок.Добавить(Лев(Стр,Поз-1)); Стр = СокрЛ(Сред(Стр,Поз)); КонецЦикла; Иначе ДлинаРазделителя = СтрДлина(Разделитель); Пока 1=1 Цикл Поз = Найти(Стр,Разделитель); Если Поз=0 Тогда МассивСтрок.Добавить(Стр); Возврат МассивСтрок; КонецЕсли; МассивСтрок.Добавить(Лев(Стр,Поз-1)); Стр = Сред(Стр,Поз+ДлинаРазделителя); КонецЦикла; КонецЕсли; КонецФункции // глРазложить |
|||
6
andrewks
07.09.11
✎
09:50
|
(4) "многострочную строку"....
Epic-fail: autorecursion detected. Not enough memory. |
|||
7
andrewks
07.09.11
✎
09:51
|
(5) разрабам за кол-во строк платят. вот и объяснение
|
|||
8
Wobland
07.09.11
✎
09:52
|
(6) <Номер строки> (обязательный)
Тип: Число. Номер получаемой строки. Нумерация строк в многострочной строке начинается с 1. © СП ;) |
|||
9
andrewks
07.09.11
✎
09:54
|
(8) я и говорю: Epic-fail ;-)
по логике, это должен быть многострочный текст |
|||
10
Stepa86
07.09.11
✎
09:57
|
Функция РазборСтроки(знач Стр, Разделитель = "," ) Экспорт
#Если Не ( ТонкийКлиент ИЛИ ВебКлиент ) Тогда // РазбираемаяСтрока - строка исходного текста // Разделитель - разделитель элементов строки Возврат ЗначениеИзСтрокиВнутр("{""#"",51e7a0d2-530b-11d4-b98a-008048da3034,{0,{""S"",""" + СтрЗаменить(СтрЗаменить( Стр , """", """"""), Разделитель, """},{""S"",""") + """}}}"); #Иначе МассивЗначений = Новый Массив; Символ = Найти(Стр, Разделитель); Пока Символ > 0 Цикл МассивЗначений.Добавить(Лев(Стр, Символ - 1)); Стр = Прав(Стр, СтрДлина(Стр) - Символ); Символ = Найти(Стр, Разделитель); КонецЦикла; МассивЗначений.Добавить(Стр); Возврат МассивЗначений; #КонецЕсли КонецФункции |
|||
11
мистер игрек
07.09.11
✎
10:01
|
Всем спасибо, коллеги!
|
|||
12
Kuzen
07.09.11
✎
10:11
|
(0)
стр = "Иванов;Петров;Сидоров"; СтрЗаменить(стр,";",Символы.ПС); Для ч = 1 По СтрЧислоСтрок(стр) Цикл Ф = СтрПолучитьСтроку(стр,ч) КонецЦикла; |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |