Помощь - Поиск - Пользователи - Календарь
Полная версия: Оператор Формат
1C-PRO - Форум по 1С > Форумы по платформе "1С:Предприятие 8.x" > (8.х) Конфигурирование на платформе "1С:Предприятие 8.x"
Dmitrij
Есть некий текст разделенный запятыми, как можно его отредактировать, к примеру Саша, Петя, Вася
нужно вывести все что находится после 1 запятой и до последней запятой т.е Саша, а все остальное не нужно. Скажите, оператор формат с этим справится, если да то как он работает?
lazy
Как работает функция формат можно посмотреть в СинтаксисПомошнике. Но она для такого не подходит. Для игр со строками больше подходят Найти(), Лев(), Прав(), Сред(). Так же в УПП есть функция РазложитьСтрокуВМассивПодстрок() - посмотри на нее, хороший пример работы с вышеупомянутыми функциями языка.
Komich
Форматом тяжело, лучше так:

Код

//Стр = "Саша, Петя, Вася"
Стр = СтрЗаменить(Стр, ",", Символы.ПС);
Для Сч = 1 по СтрЧислоСтрок(Стр) Цикл
ПодСтр = СтрПолучитьСтроку(Стр, Сч);
. . .
КонецЦикла;


lazy
Цитата
к примеру Саша, Петя, Вася
нужно вывести все что находится после 1 запятой и до последней запятой т.е Саша,
Между первой и последней запятой в данном примере находится "Петя" :)

Komich ИМХО - код не совсем корректен, если исходить из условий задачи. Нужны символы между первой и последней запятой. Если заюзать
Код
СтрЗаменить(Стр, ",", Символы.ПС)
То получается, что строку мы попортили - ее потом нужно будет обратно преобразовывать заменой Символы.ПС на "," но никто по условию не сказал, что строка уже не содержит Символы.ПС и при обратном преобразовании мы вполне можем получить уже не то, что было вначале.

В большей степени здесь нужно просто ползти по строке от момента встречи с первой запятой до момента встречи с последней. Опять же ИМХО...
Komich
Да это я для примера как разбирать строки с разделителями.
Вообще-то, если смотреть вопрос, то Саши после 1 запятой нет
FreeDown
Код
//*************************************************************************************************
// Функция ВыделитьСловоДоРазделителя()
//
// Выделяет подстроку из строки от начала строки до разделителя слов
//
// Параметры:
// ИсходнаяСтрока - Строка - исходная строка
// Разделитель - Строка - подстрока/символ, которой разделяются слова в исходной строке
//
// Возвращаемое значение:
// Строка - выделенное слово
//
Функция ВыделитьСловоДоРазделителя(ИсходнаяСтрока, Разделитель)

Буфер = СокрЛ(ИсходнаяСтрока);
ПозицияРазделителя = Найти(Буфер, Разделитель);

Если ПозицияРазделителя = 0 Тогда
ИсходнаяСтрока = "";
Возврат Буфер;
КонецЕсли;

ВыделенноеСлово = СокрЛП(Лев(Буфер, ПозицияРазделителя - 1));
ИсходнаяСтрока = Сред(ИсходнаяСтрока, ПозицияРазделителя + СтрДлина(Разделитель));

Возврат ВыделенноеСлово;

КонецФункции //ВыделитьСловоДоРазделителя()



Это слегка доработанная стандартная ВыделитьСлово()


Следующий код
Код
СписокИмен = "Саша, Петя, Вася";
ИмяИзСписка = ВыделитьСловоДоРазделителя(СписокИмен, ",");


нам даст СписокИмен = " Петя, Вася" и ИмяИзСписка = "Саша"
ThargoN_SG
Да тут, судя по всему, надо ждать комментариев автора чтобы понять что-же на самом деле ему нужно, поскольку задача поставлена не совсем корректно:
Цитата
Есть некий текст разделенный запятыми, как можно его отредактировать, к примеру Саша, Петя, Вася
нужно вывести все что находится после 1 запятой и до последней запятой т.е Саша, а все остальное не нужно.


Если автору все-же надо чтобы вернулось значение между первой и последней запятой (и это будет "Петя" biggrin.gif ), то опять же, не совсем ясно как надо писать код функции - поскольку неизвестно какой вид может принять исходная строка. Например, что вернуть для "Саша, Петя, Вася, Ваня" или для "Саша, Петя" ?..
BabySG
На мисте обсуждали авторское сообщение :)
Это текстовая версия — только основной контент. Для просмотра полной версии этой страницы, пожалуйста, нажмите сюда.
Русская версия Invision Power Board © 2001-2009 Invision Power Services, Inc.