1с статьи | Курс-репетитор программиста 1С
Строки

Символы строки

Алфавит = "Слово по буквам";

// считаем символы строки в массив
МассивСимволов = Новый Массив;

// нумерация символов в строке начинается с 1   
Для Индекс = 1 По СтрДлина(Алфавит) Цикл
   
   // получаем символ строки по индексу
   Символ = Сред(Алфавит, Индекс, 1);
   МассивСимволов.Добавить(Символ);
   
КонецЦикла;

// соединяем элементы массива
ТекстСообщения = СтрСоединить(МассивСимволов);
Сообщить(ТекстСообщения);   

// Что будет выведено?

Показать решение

Слова строки

Алфавит = "Слово по буквам, по цифрам";

// очистим строку от знаков препинания
СимволыДляУдаления = "; : . , / \";
МассивСимволыДляУдаления = СтрРазделить(СимволыДляУдаления, " ");

Для Каждого Элемент Из МассивСимволыДляУдаления Цикл
   Алфавит = СтрЗаменить(Алфавит, Элемент, "");      
КонецЦикла;

// считаем слова строки в массив
МассивСлов = СтрРазделить(Алфавит, " ");

// каждое слово будем начинать с большой буквы
Для Индекс = 0 По МассивСлов.ВГраница() Цикл
   ФорматированноеСлово = ТРег(МассивСлов[Индекс]);
   МассивСлов.Установить(Индекс, ФорматированноеСлово);
КонецЦикла;

// соединяем элементы массива
ТекстСообщения = СтрСоединить(МассивСлов, Символы.ПС);
Сообщить(ТекстСообщения);   

// Что будет выведено?

Показать решение

Строка как текст запроса

Запрос = Новый Запрос; // создали запрос

// подготовили шаблон текста запроса
ТекстЗапроса = "
|Выбрать Т.Ссылка 
|ИЗ ВТ КАК Т
|ГДЕ <ТекстУсловий>";

// каждое условие - структура
КлючСтруктурыУсловия = "ИмяПоля, Значение, ЭтоРавенство";
// массив всех условий
МассивУсловий = Новый Массив;
МассивУсловий.Добавить(Новый Структура(КлючСтруктурыУсловия, 
   "Поле1", 1, Истина));  // по полю 1 на равенство
МассивУсловий.Добавить(Новый Структура(КлючСтруктурыУсловия, 
   "Поле2", Истина, Ложь)); // по полю 2 на неравенство

ТекстУсловий = "Истина"; // начальный сегмент
Для Индекс = 0 По МассивУсловий.ВГраница() Цикл
   Условие = МассивУсловий[Индекс]; // получили условие
   ТекстУсловий = ТекстУсловий + " И Т." + Условие.ИмяПоля   +
       // если равенство, добавляем " = ", иначе " <> "
      ?(Условие.ЭтоРавенство," = ", " <> ") + 
      "&ЗначениеПараметра" + Индекс; // нумерация по индексу
      
   // устанавливаем параметр запроса   
   Запрос.УстановитьПараметр("ЗначениеПараметра" + Индекс,
      Условие.Значение);
      
КонецЦикла; 

// формируем текст запроса
ТекстЗапроса = СтрЗаменить(ТекстЗапроса, 
   "<ТекстУсловий>", ТекстУсловий); 

Запрос.Текст = ТекстЗапроса;

Сообщить(ТекстЗапроса);

Показать вывод

Нумерация тегов в строке

ИсходнаяСтрока = 
"<span class='c'>// 1
|<span class='c'>// 2
|<span class='c'>// 3
|Сообщить<span class='k'>(
|<span class='n'>5
|<span class='k'>)
|<span class='k'>;";

// добавим каждому элементу span атрибут id 
// с уникальным значеним

Счетчик = 1; // счетчик атрибута id
ПозицияПоиска = 1; // начальная позиция поиска
ПозицияПоиска = СтрНайти(ИсходнаяСтрока, // ищем в исходной строке
   "<span", // такой текст
   НаправлениеПоиска.СНачала, // по направлению с начала
   ПозицияПоиска // начиная с этой позиции
);                                         
// 0 - если ничего не нашли
Пока ПозицияПоиска<>0 Цикл
   
   // получим строку до найденной позиции               
   // для второй итерации: 
   //<span id='span1' class='c'>// 1¶
   НачалоСтроки = Лев(ИсходнаяСтрока, ПозицияПоиска-1); 
   // сформируем текст для вставки 
   // для второй итерации: 
   //<span id='span2' 
   ТекстВставки = "<span id='span" + Счетчик + "' ";   
   // получим часть исходной строки после найденного '<span'
   // для второй итерации: 
   //class='c'>// 2 и далее до конца строки
   ЗавершениеСтроки = Прав(ИсходнаяСтрока, 
      СтрДлина(ИсходнаяСтрока) - ПозицияПоиска - СтрДлина("<span"));
      
   // переформируем исходную строку   
   ИсходнаяСтрока = НачалоСтроки + ТекстВставки + ЗавершениеСтроки; 
   Счетчик = Счетчик + 1; // увеличим счетчик id
   // передвинем начальную позицию поиска
   ПозицияПоиска = ПозицияПоиска + СтрДлина(ТекстВставки); 
   // найдем следующий '<span'
   ПозицияПоиска = СтрНайти(ИсходнаяСтрока, "<span", 
	НаправлениеПоиска.СНачала, ПозицияПоиска); 
   
КонецЦикла;

Сообщить(ИсходнаяСтрока);

Показать вывод

Слишком маленькое разрешение экрана.