Имя: Пароль:
1C
1С v8
Как найти и заменить две кавычки в одну?
Ø (Волшебник 03.06.2024 21:06)
,
0 m982515
 
03.06.24
15:04
В номенклатуре встречаются наименования обремененные двумя кавычками. Как написать СтрЗаменить(Наим, <как тут?>, """")?
1 Волшебник
 
03.06.24
15:05
СтрЗаменить(Наим, """""", """")
2 Волшебник
 
03.06.24
15:05
А чтобы заменить три кавычки на одну, надо так:
СтрЗаменить(Наим, """""""", """")
3 Волшебник
 
03.06.24
15:05
А чтобы заменить четыре кавычки на одну, надо так:
СтрЗаменить(Наим, """""""""", """")
4 Волшебник
 
03.06.24
15:06
Понятно? Индуцируйте!
5 m982515
 
03.06.24
15:24
(1)Изначально попробовал - не получилось... видимо опечатался... Спасибо. Понятно. :)
6 Волшебник
 
03.06.24
15:25
(5) 🔥
7 maxab72
 
03.06.24
16:10
Символ(34) = "
8 Волшебник
 
03.06.24
16:11
(7) Ещё цикл зарядите:
Для Каждого н = 1 По 2 Цикл
9 maxab72
 
03.06.24
16:15
Пока Sin(н) < 4 Цикл
н = н + 1;
10 Eiffil123
 
03.06.24
16:18
(9) а на множестве комплексных чисел сработает?
11 trad
 
03.06.24
16:25
Функция СократитьПовторяющиесяСимволы(Знач Стр, Символ=" ") Экспорт
    Повтор = Символ + Символ;
    Стр = СтрЗаменить(Стр, Повтор, "@~");
    Стр = СтрЗаменить(Стр, "~@", "");
    Стр = СтрЗаменить(Стр, "@~", Символ);
    Стр = СтрЗаменить(Стр, Повтор, Символ);
    Возврат Стр;
КонецФункции

Наим = СократитьПовторяющиесяСимволы(Наим, """");
12 maxab72
 
03.06.24
16:38
(10) Ну как же в учете, да без мнимых единиц!!!
(11) А теперь написать функцию, чтоб из строки убирала разом все повторы. Типа "аааАаБббВвгГГГгдДДдд" превращала бы в "аБВгд"
13 Волшебник
 
03.06.24
16:58
(12) промты писать не буду, а то вы охренеете.

Понял тебя, бро! Надо сравнивать буквы без учёта регистра, а в результат сохранять текущую букву с её исходным регистром. Вот корректный вариант:

Функция УбратьПовторяющиесяБуквы(ИсходнаяСтрока) Экспорт
    // Инициализация переменной для результата
    ИтоговаяСтрока = "";

    // Инициализация предыдущей буквы
    ПредыдущаяБуква = "";

    // Проходим по каждому символу в строке
    Для Сч = 1 По СтрДлина(ИсходнаяСтрока) Цикл
        Буква = Сред(ИсходнаяСтрока, Сч, 1);
        
        // Сравниваем текущую букву с предыдущей без учета регистра
        Если НРег(Буква) <> НРег(ПредыдущаяБуква) Тогда
            ИтоговаяСтрока = ИтоговаяСтрока + Буква;
            ПредыдущаяБуква = Буква;
        КонецЕсли;
    КонецЦикла;

    Возврат ИтоговаяСтрока;
КонецФункции


Пример использования:

ИсходнаяСтрока = "аааАаБббВвгГГГгдДДдд";
Результат = УбратьПовторяющиесяБуквы(ИсходнаяСтрока);
Сообщить(Результат); // Вывод: "аБВгд"

Теперь результат будет именно таким, как нужно. Надеюсь, теперь всё чётко!
14 Ботаник Гарден Меран
 
03.06.24
17:06
А как же "СтрЗаменитьПоРегулярномуВыражению", начиная с 8.3.23?
15 Волшебник
 
03.06.24
17:08
(14) Ну давай, произведи регулярку, порази нас элегантностью кода
16 Ботаник Гарден Меран
 
03.06.24
17:12
Некогда код писать, сижу и телепатю шаловливые мысли пользователей и аналитиков.
Просто вспомнилось, сколько ожиданий было, когда же появятся регулярки.
Ну вот они есть.
И.....горь!!!!
17 Волшебник
 
03.06.24
17:13
(16) Регулярки... Не нужны они тут, больше возни
18 PLUT
 
03.06.24
17:17
(17) а этот ваш бредогенератор может эту "задачу" через "регулярки" ?
19 Волшебник
 
03.06.24
17:25
(18) А Вы можете?

20 PLUT
 
03.06.24
17:55
(19) А как же составить это самое регулярное выражение?

До недавнего времени существовало 2 ответа на этот вопрос:

Изучить документацию по регулярным выражениям и составить регулярку самому


Попросить кого-то более опытного сделать это за вас
21 Волшебник
 
03.06.24
18:06
(20) Ну так неинтересно. Это Вы предложили микроскопом забить гвоздь. Я просто хотел посмотреть, что из этого получится