Как вставить в строке пробел после 14-го символа?

1. user817897 2 22.10.19 12:21 Сейчас в теме
Добрый день. Подскажите пожалуйста.
Есть строка из 120 символов к примеру, надо после 14-го символа вставить пробел (что-бы 15-й стал пробелом), как лучше сделать?
Ответы
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
2. Azamatex 13 22.10.19 12:26 Сейчас в теме
Разбить строку и добавить символ, через Лев() и Сред()
user817897; +1 Ответить
3. user817897 2 22.10.19 12:28 Сейчас в теме
(2)Понял,ок,спасибо. Видимо по другому никак нельзя?
4. xSavantx 25 22.10.19 12:29 Сейчас в теме
(3) А этот способ чем не устраивает?))
user817897; +1 Ответить
6. Azamatex 13 22.10.19 12:32 Сейчас в теме
(3)Я по крайне мере не знаю)
user817897; +1 Ответить
5. xSavantx 25 22.10.19 12:31 Сейчас в теме
Стр = Лев(Стр,14) + " " + Сред(Стр,15)
reshkra; user817897; mqlochink; +3 Ответить
7. user817897 2 22.10.19 12:34 Сейчас в теме
(5)устраивает,чёт не подумал что можно короче написать как у вас, а написал так:
Часть1 = Лев(ЦелаяЧасть, 14);
Часть2 = Сред(ЦелаяЧасть, 14+1);
ЦелаяЧасть = Часть1 + " " +Часть2;

поэтому и подумал может есть другой вариант) спасибо всем большое)
8. Sashares 35 22.10.19 13:03 Сейчас в теме
(7)1С не умеет работать со строкой как с массивом символов, к сожалению.
user817897; +1 Ответить
9. GeraltSnow 175 22.10.19 13:45 Сейчас в теме
Процедура ВставитьСимволВСтроку(Строка="qwertyytrewq", Символ="-", ПозицияВставки=6);
	
	Массив = Новый Массив;
	
	Для Позиция=0 По СтрДлина(Строка)-1 Цикл
		Массив.Вставить(Позиция, Сред(Строка, Позиция+1, 1));		
	КонецЦикла;
	
	Массив.Вставить(ПозицияВставки, Символ);
	
	Строка = СтрСоединить(Массив,"");
	
	Сообщить(Строка); //qwerty-ytrewq	
	
КонецПроцедуры
Показать
user817897; independ; +2 Ответить
10. Sashares 35 22.10.19 14:04 Сейчас в теме
(9)Идея занятная, но нет, использовать это не вариант.
Если бы строка была массивом символов со всеми его возможностями это одно, а вот то что вы предлагаете - совсем другое =(
user817897; +1 Ответить
12. GeraltSnow 175 22.10.19 14:53 Сейчас в теме
(10) Да это я так, по приколу. Способ крайне неэффективный, склеивание работает в 8 раз быстрее.
Прикрепленные файлы:
user817897; Sashares; +2 Ответить
11. AlexandrSmith 69 22.10.19 14:18 Сейчас в теме
Я бы так вставил

НоваяСтрока = Лев(ИсходнаяСтрока, Позиция) + СтрокаДляВставки + Прав(ИсходнаяСтрока, СтрДлина(ИсходнаяСтрока) - Позиция));

И не надо трех строк и специальной функции;

(9) (1) Но допускаю что ваш ответ лучший.
user817897; +1 Ответить
13. NAlex 6 06.07.20 17:54 Сейчас в теме
Похожая задачка нужно в строке - первый параметр расставить пробелы также как в строке-образце (маске) - второй параметр, причем, пробелов может быть произвольное количество. Может быть кому пригодится.

УстановитьВЗначенииПроблелыПоСтрокеОбразцу("0123456789", "0000  00 0     000");

Процедура УстановитьВЗначенииПроблелыПоСтрокеОбразцу(Значение, СтрокаОбразец)
	
	Значение = СтрЗаменить(Значение, " ", "");
	ПозицииПробелов = Новый Массив;
	
	СчВх = 1;
	Пока Истина Цикл
		Позиция = СтрНайти(СтрокаОбразец, " ",,, СчВх);
		СчВх = СчВх + 1;
		Если Позиция > 0 Тогда
			ПозицииПробелов.Добавить(Позиция);
		Иначе
			Прервать;
		КонецЕсли;
	КонецЦикла;
	
	Результат = "";
	Сч = 1;
	СчСтр = 1;
	КоличПроб = 0;
	Для Каждого Позиция Из ПозицииПробелов Цикл
		Если Сч = Позиция Тогда
			Результат = Результат + " ";
			Сч = Позиция + 1;
			КоличПроб = КоличПроб + 1;
			Продолжить;
		КонецЕсли;
		Пока СчСтр < Позиция - КоличПроб Цикл
			Результат = Результат + Сред(Значение, СчСтр, 1);
			СчСтр = СчСтр + 1;
		КонецЦикла;
		Результат = Результат + " ";
		Сч = Позиция + 1;
		КоличПроб = КоличПроб + 1;
	КонецЦикла;
	Результат = Результат + Сред(Значение, СчСтр);
	Значение = Результат;
	
КонецПроцедуры
Показать
14. Sashares 35 06.07.20 18:35 Сейчас в теме
(13)
Чуть проще:
Процедура УстановитьВЗначенииПроблелыПоСтрокеОбразцу(Значение, СтрокаОбразец)
	
	Результат = "";
	МассивОбразец = СтрРазделить(СтрокаОбразец," ");
	ПозицияНачала = 1;
	Для Инд = 0 По МассивОбразец.Количество()-1 Цикл
		ТекЭлемент = МассивОбразец[Инд];
		ДлинаЭлемента = СтрДлина(ТекЭлемент);
		
		Если ДлинаЭлемента>0 Тогда
			Результат = Результат + Сред(Значение,ПозицияНачала,ДлинаЭлемента);
			ПозицияНачала = ПозицияНачала + ДлинаЭлемента;
		КонецЕсли;
		Результат = Результат + " ";
	КонецЦикла;
	
    Значение = Результат;
    
КонецПроцедуры
Показать
user1473651; user817897; NAlex; +3 Ответить
15. user817897 2 28.07.20 23:14 Сейчас в теме
Ох ничего себе какие способы прикольные есть))) спасибо всем)
Оставьте свое сообщение

Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот