Форум 1С
Программистам, бухгалтерам, администраторам, пользователям
Задай вопрос - получи решение проблемы
15 окт 2021, 22:36

Замена пробелов в строке

Автор Sheriff, 03 июл 2017, 11:37

0 Пользователей и 1 гость просматривают эту тему.

Sheriff

Всем привет! Настраиваю файл, для последующей загрузке на сайт, но мне надо убрать в наименовании и адресе, ненужные пробелы и заменить их на *. Вот, что я сделал:
Ответственный1=СтрЗаменить (Ответственный," ","*");
Адрес = СокрЛП(ТРег(Адрес));
    // Удаляем пробелы
    Если НЕ ПустаяСтрока(Адрес) Тогда
        Адрес = СтрЗаменить(Адрес, " ", "*"); //Символы);
    КонецЕсли;   
   
ПолноеНаименование =  СтрЗаменить (Контрагент.НаименованиеПолное, " ", "*");

В файле, который у меня выгружен, выходит следующее:
Товарищество*с*ограниченной*ответственностью*"Компания**"Балапан*Көлiгi" Республика*Казахстан,071100*Вко,*Г.курчатов,*Ул.железнодорожная,47/1

А мне надо сделать вот так:
Товарищество*с*ограниченной*ответственностью "Компания*"Балапан*К?лiгi" Республика*Казахстан, 071100*ВКО,*г.Курчатов,*ул.Железнодорожная, 47/1

Как это осуществить????

alex0402

Цитата: Sheriff от 03 июл 2017, 11:37Товарищество*с*ограниченной*ответственностью "Компания*"Балапан*К?лiгi" Республика*Казахстан, 071100*ВКО,*г.Курчатов,*ул.Железнодорожная, 47/1
а что смущает? ** или нужен пробел перед первой кавычкой?
Спасибо за Сказать спасибо

Sheriff

Цитата: alex0402 от 03 июл 2017, 11:54
Цитата: Sheriff от 03 июл 2017, 11:37Товарищество*с*ограниченной*ответственностью "Компания*"Балапан*К?лiгi" Республика*Казахстан, 071100*ВКО,*г.Курчатов,*ул.Железнодорожная, 47/1
а что смущает? ** или нужен пробел перед первой кавычкой?
Нужен пробел перед первой кавычкой

alex0402

Поз = Найти(ПолноеНаименование,"""");
Если Сред(ПолноеНаименование,Поз-1,1) = "*" Тогда
    ПолноеНаименование = Лев(ПолноеНаименование,Поз-2) + " " + Сред(ПолноеНаименование,Поз);
КонецКсли


как то так.
Спасибо за Сказать спасибо

Sheriff

Цитата: alex0402 от 03 июл 2017, 12:01
Поз = Найти(ПолноеНаименование,"""");
Если Сред(ПолноеНаименование,Поз-1,1) = "*" Тогда
    ПолноеНаименование = Лев(ПолноеНаименование,Поз-2) + " " + Сред(ПолноеНаименование,Поз);
КонецКсли


как то так.
За это огромное спасибо!
И еще вопрос:
А как убрать двойные ** в названии и поставить пробел после запятой, в адресе Республика*Казахстан,071100

ilyay

Еще может быть неразрывный пробел или табуляция.
Необходимо их тоже заменять:
Текст = СтрЗаменить(СтрЗаменить(Текст, Символы.НПП, "*"), Символы.Таб, "*");

Убрать двойные звездочки:

Длина = СтрДлина(Текст);
Пока Истина Цикл
Текст = СтрЗаменить(Текст, "**", "*");
НоваяДлина = СтрДлина(Текст);
Если НоваяДлина = Длина Тогда
    Прервать;
КОнецЕсли;
Длина = НоваяДлина;
КонецЦикла;

alex0402

СтрЗаменить(Строка,"**","*");
Цитата: Sheriff от 03 июл 2017, 12:13За это огромное спасибо!
а просто ткнуть Сказать СПАСИБО?
Спасибо за Сказать спасибо

Sheriff

Цитата: alex0402 от 03 июл 2017, 12:17
СтрЗаменить(Строка,"**","*");
Цитата: Sheriff от 03 июл 2017, 12:13За это огромное спасибо!
а просто ткнуть Сказать СПАСИБО?
Да это без проблем!)
Добавлено: 03 июл 2017, 12:24


Цитата: ilyay от 03 июл 2017, 12:14
Еще может быть неразрывный пробел или табуляция.
Необходимо их тоже заменять:
Текст = СтрЗаменить(СтрЗаменить(Текст, Символы.НПП, "*"), Символы.Таб, "*");

Убрать двойные звездочки:

Длина = СтрДлина(Текст);
Пока Истина Цикл
Текст = СтрЗаменить(Текст, "**", "*");
НоваяДлина = СтрДлина(Текст);
Если НоваяДлина = Длина Тогда
    Прервать;
КОнецЕсли;
Длина = НоваяДлина;
КонецЦикла;

А как заменить неразрывный пробел, у меня в названии указано Республика*Казахстан,071100*Вко - мне после запятой надо поставить пробел
Добавлено: 03 июл 2017, 12:39


Цитата: ilyay от 03 июл 2017, 12:14
Еще может быть неразрывный пробел или табуляция.
Необходимо их тоже заменять:
Текст = СтрЗаменить(СтрЗаменить(Текст, Символы.НПП, "*"), Символы.Таб, "*");

Убрать двойные звездочки:

Длина = СтрДлина(Текст);
Пока Истина Цикл
Текст = СтрЗаменить(Текст, "**", "*");
НоваяДлина = СтрДлина(Текст);
Если НоваяДлина = Длина Тогда
    Прервать;
КОнецЕсли;
Длина = НоваяДлина;
КонецЦикла;

А как заменить неразрывный пробел, у меня в названии (неразрывный пробел) указано Республика*Казахстан,071100*Вко - мне после запятой надо поставить пробел, чтобы получилось Республика*Казахстан, 071100*Вко

ilyay

Сначала заменяете пробелы, табуляции и неразрывные пробелы на звездочки, потом меняете пары звездочек в цикле на одинарные.
Добавлено: 03 июл 2017, 14:42


Дополнительно, можно найти все запятые и проверить, что после них стоят звездочки (после замены).

Sheriff

Цитата: Sheriff от 03 июл 2017, 12:13
Цитата: alex0402 от 03 июл 2017, 12:01
Поз = Найти(ПолноеНаименование,"""");
Если Сред(ПолноеНаименование,Поз-1,1) = "*" Тогда
    ПолноеНаименование = Лев(ПолноеНаименование,Поз-2) + " " + Сред(ПолноеНаименование,Поз);
КонецКсли


как то так.
За это огромное спасибо!
И еще вопрос:
А как убрать двойные ** в названии и поставить пробел после запятой, в адресе Республика*Казахстан,071100
Сделал по аналогии, но только на адрес
Поз = Найти(Адрес, "0");
Если Сред(Адрес,Поз-1,1) = "," Тогда
   Адрес = Лев(Адрес,Поз-2) + " " + Сред(Адрес,Поз);
КонецЕсли;
Это если у меня в Адресе, первый идет индекс начинающийся с 0, а если индекс начинается не с 0, то как быть?

Теги:

Похожие темы (5)

Рейтинг@Mail.ru Rambler's Top100

Поиск