Форум 1С
Форум 1С
Программистам. Бухгалтерам. Администраторам. Пользователям
Задай вопрос - получи решение проблемы. Без троллинга и флуда.
18 Июн 2021, 07:47
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Не получили письмо с кодом активации?
МультиВход
 
collapse

Автор Тема: Замена пробелов в строке  (Прочитано 5031 раз)

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

Оффлайн Sheriff

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

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

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

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


Оффлайн alex0402

  • *****
  • Регистрация: 2010-09-10
  • Сообщений: 2000
  • РЕПУТАЦИЯ: 358
  • КПД: 18%
  • Профессия: Программист 1С
Товарищество*с*ограниченной*ответственностью "Компания*"Балапан*К?лiгi" Республика*Казахстан, 071100*ВКО,*г.Курчатов,*ул.Железнодорожная, 47/1
а что смущает? ** или нужен пробел перед первой кавычкой?
Спасибо за Сказать спасибо

Оффлайн Sheriff

  • ***
  • Регистрация: 2016-10-04
  • Сообщений: 127
  • РЕПУТАЦИЯ: -1
  • Профессия: Ученик 1С
Товарищество*с*ограниченной*ответственностью "Компания*"Балапан*К?лiгi" Республика*Казахстан, 071100*ВКО,*г.Курчатов,*ул.Железнодорожная, 47/1
а что смущает? ** или нужен пробел перед первой кавычкой?
Нужен пробел перед первой кавычкой

Оффлайн alex0402

  • *****
  • Регистрация: 2010-09-10
  • Сообщений: 2000
  • РЕПУТАЦИЯ: 358
  • КПД: 18%
  • Профессия: Программист 1С
Поз = Найти(ПолноеНаименование,"""");
Если Сред(ПолноеНаименование,Поз-1,1) = "*" Тогда
    ПолноеНаименование = Лев(ПолноеНаименование,Поз-2) + " " + Сред(ПолноеНаименование,Поз);
КонецКсли

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

Оффлайн Sheriff

  • ***
  • Регистрация: 2016-10-04
  • Сообщений: 127
  • РЕПУТАЦИЯ: -1
  • Профессия: Ученик 1С
Поз = Найти(ПолноеНаименование,"""");
Если Сред(ПолноеНаименование,Поз-1,1) = "*" Тогда
    ПолноеНаименование = Лев(ПолноеНаименование,Поз-2) + " " + Сред(ПолноеНаименование,Поз);
КонецКсли

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

Оффлайн ilyay

  • 1С:Специалист, 1С:Эксперт
  • *****
  • Регистрация: 2011-06-09
  • Сообщений: 562
  • РЕПУТАЦИЯ: 104
  • КПД: 19%
  • Профессия: Разработчик 1С
Еще может быть неразрывный пробел или табуляция.
Необходимо их тоже заменять:
Текст = СтрЗаменить(СтрЗаменить(Текст, Символы.НПП, "*"), Символы.Таб, "*");

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

Оффлайн alex0402

  • *****
  • Регистрация: 2010-09-10
  • Сообщений: 2000
  • РЕПУТАЦИЯ: 358
  • КПД: 18%
  • Профессия: Программист 1С
СтрЗаменить(Строка,"**","*");
За это огромное спасибо!
а просто ткнуть Сказать СПАСИБО?
Спасибо за Сказать спасибо

Оффлайн Sheriff

  • ***
  • Регистрация: 2016-10-04
  • Сообщений: 127
  • РЕПУТАЦИЯ: -1
  • Профессия: Ученик 1С
СтрЗаменить(Строка,"**","*");
За это огромное спасибо!
а просто ткнуть Сказать СПАСИБО?
Да это без проблем!)
Добавлено: 03 Июл 2017, 12:24

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

Убрать двойные звездочки:
Длина = СтрДлина(Текст);
Пока Истина Цикл
Текст = СтрЗаменить(Текст, "**", "*");
НоваяДлина = СтрДлина(Текст);
Если НоваяДлина = Длина Тогда
    Прервать;
КОнецЕсли;
Длина = НоваяДлина;
КонецЦикла;
А как заменить неразрывный пробел, у меня в названии указано Республика*Казахстан,071100*Вко - мне после запятой надо поставить пробел
Добавлено: 03 Июл 2017, 12:39

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

Убрать двойные звездочки:
Длина = СтрДлина(Текст);
Пока Истина Цикл
Текст = СтрЗаменить(Текст, "**", "*");
НоваяДлина = СтрДлина(Текст);
Если НоваяДлина = Длина Тогда
    Прервать;
КОнецЕсли;
Длина = НоваяДлина;
КонецЦикла;
А как заменить неразрывный пробел, у меня в названии (неразрывный пробел) указано Республика*Казахстан,071100*Вко - мне после запятой надо поставить пробел, чтобы получилось Республика*Казахстан, 071100*Вко

Последний раз редактировалось: Sheriff; 03 Июл 2017, 12:39. Причина: Объединение сообщений

Оффлайн ilyay

  • 1С:Специалист, 1С:Эксперт
  • *****
  • Регистрация: 2011-06-09
  • Сообщений: 562
  • РЕПУТАЦИЯ: 104
  • КПД: 19%
  • Профессия: Разработчик 1С
Сначала заменяете пробелы, табуляции и неразрывные пробелы на звездочки, потом меняете пары звездочек в цикле на одинарные.
Добавлено: 03 Июл 2017, 14:42

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

Последний раз редактировалось: ilyay; 03 Июл 2017, 14:42. Причина: Объединение сообщений

Оффлайн Sheriff

  • ***
  • Регистрация: 2016-10-04
  • Сообщений: 127
  • РЕПУТАЦИЯ: -1
  • Профессия: Ученик 1С
Поз = Найти(ПолноеНаименование,"""");
Если Сред(ПолноеНаименование,Поз-1,1) = "*" Тогда
    ПолноеНаименование = Лев(ПолноеНаименование,Поз-2) + " " + Сред(ПолноеНаименование,Поз);
КонецКсли

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


Теги:
 


* Живое общение

Не устроил ответ?

Зарегистрируйся и задай свой вопрос. Живое общение приносит результат намного быстрее.


Зарегистрироваться

* Реклама

* Поиск

* Последние задачи на разработку (фриланс)

* Последние вакансии

* Том 10 авторов за месяц

LexaK
69 Сообщений
Геннадий ОбьГЭС Геннадий ОбьГЭС
67 Сообщений
neek666
33 Сообщений
antoneus antoneus
31 Сообщений
Ивашка
25 Сообщений
KATERINA 861
18 Сообщений
Алексей_1985_06
17 Сообщений
SSC
13 Сообщений
alexandr_ll
12 Сообщений
BuhRust
10 Сообщений

* Кто онлайн

  • Точка Гостей: 287
  • Точка Скрытых: 1
  • Точка Пользователей: 2
  • Точка Сейчас на форуме:

* Облако тэгов

* Инструменты

* Дополнительно

Поиск