Применение чата 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); Возврат Результат; КонецФункции

Свежие комментарии