Применение чата GPT для написания простых строковых функций

Попробовал написать строковые функции с чатом GPT.

Первая для получения цифр справа строки. ИИ предложил:

Функция ИзвлечьЦифрыСправа(ИсходнаяСтрока)
    // Переменная для хранения результата
    Результат = "";
    
    // Начинаем с конца строки
    Для Индекс = СтрДлина(ИсходнаяСтрока) По 1 Шагом -1 Цикл
        Символ = Сред(ИсходнаяСтрока, Индекс, 1);
        
        // Проверяем, является ли символ цифрой
        Если Символ >= "0" И Символ <= "9" Тогда
            Результат = Символ + Результат; // Добавляем символ к результату
        Иначе
            // Если встретили нецифровой символ, выходим из цикла
            break;
        КонецЕсли;
    КонецЦикла;
    
    // Возвращаем результат
    Возврат Результат;
КонецФункции

Я переписал так (в 1С нет оператора Шагом):

Функция ИзвлечьЦифрыСправа(ИсходнаяСтрока)
    // Переменная для хранения результата
    Результат = "";
    
    // Начинаем с конца строки
	Всего = СтрДлина(ИсходнаяСтрока);
	Для Индекс = 1 ПО Всего Цикл
		
		Поз = Всего - Индекс + 1;
		
		Символ = Сред(ИсходнаяСтрока, Поз, 1);
        
        // Проверяем, является ли символ цифрой
        Если Символ >= "0" И Символ <= "9" Тогда
            Результат = Символ + Результат; // Добавляем символ к результату
        Иначе
            // Если встретили нецифровой символ, выходим из цикла
            Прервать;
        КонецЕсли;
    КонецЦикла;
    
    // Возвращаем результат
    Возврат Результат;
КонецФункции

Вторая для удаления лидирующих нулей. ИИ предложил сначала максимально тупую версию через СтрЗаменить:

Функция УдалитьЛидирующиеНули(ИсходнаяСтрока)
    // Проверяем, является ли строка пустой
    Если ИсходнаяСтрока = "" Тогда
        Возврат ""; // Если строка пустая, возвращаем пустую строку
    КонецЕсли;

    // Удаляем лидирующие нули
    Результат = СтрЗаменить(ИсходнаяСтрока, "0", "", 1, СтрДлина(ИсходнаяСтрока) - СтрДлина(СтрЗаменить(ИсходнаяСтрока, "0", "", 1)));

    // Если результат пустой, значит, все символы были нулями, возвращаем "0"
    Если Результат = "" Тогда
        Возврат "0";
    КонецЕсли;

    Возврат Результат;
КонецФункции

Я попросил переписать:

Исправь эту функцию чтобы она работала без СтрЗаменить, а находила первый ненулевой символ и с него возвращала строку

ИИ переписал так, я принял его версию:

Функция УдалитьЛидирующиеНули(ИсходнаяСтрока)
    // Проверяем, является ли строка пустой
    Если ИсходнаяСтрока = "" Тогда
        Возврат ""; // Если строка пустая, возвращаем пустую строку
    КонецЕсли;

    // Ищем индекс первого ненулевого символа
    ИндексПервогоНенулевого = 1; // Начинаем с первого символа

    Пока ИндексПервогоНенулевого <= СтрДлина(ИсходнаяСтрока) И Сред(ИсходнаяСтрока, ИндексПервогоНенулевого, 1) = "0" Цикл
        ИндексПервогоНенулевого = ИндексПервогоНенулевого + 1;
    КонецЦикла;

    // Если индекс превысил длину строки, значит все символы были нулями
    Если ИндексПервогоНенулевого > СтрДлина(ИсходнаяСтрока) Тогда
        Возврат "0"; // Возвращаем "0", если строка состояла только из нулей
    КонецЕсли;

    // Возвращаем подстроку, начиная с первого ненулевого символа
    Результат = Сред(ИсходнаяСтрока, ИндексПервогоНенулевого, СтрДлина(ИсходнаяСтрока) - ИндексПервогоНенулевого + 1);
    
    Возврат Результат;
КонецФункции

fixin

Программирую на 1С с 1999 года. В 1С просто Гений. В 2020 году ушел из офиса на вольные хлеба фриланса. Принимаю заказы.

Читайте также:

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *