HelpF.pro

Функция проверки, строка написана только русскими и латинскими буквами?

Код 1C v 8.х
 // Параметры:
// СтрокаПараметр - строка, проверяемая строка.
//
// Возвращаемое значение:
// Истина - строка состоит из допустимых символов
// Ложь - в строке встречаются недопустимые символы
//
// Описание:
// Строка проверяется на наличие только русских и латинских букв;
// кроме того, допускаются дефис, "Ё", "ё".
//
Функция СтрокаНаписанаРусскимиИлиЛатинскими(Знач СтрокаПараметр)

СтрокаПараметр = СокрЛП(СтрокаПараметр);

КоличествоСимволов = СтрДлина(СтрокаПараметр);

Если КоличествоСимволов > 0 Тогда

ПервыйСимвол = КодСимвола(Лев(СтрокаПараметр,1));
Русские = (ПервыйСимвол >= 192) или (ПервыйСимвол = 184) или (ПервыйСимвол = 168);

СписокДопустимыхЗначений = Новый Соответствие;
СписокДопустимыхЗначений.Вставить(184,Истина); // ё
СписокДопустимыхЗначений.Вставить(168,Истина); // Ё
СписокДопустимыхЗначений.Вставить(45,Истина); // "-"

Для Сч = 1 По КоличествоСимволов Цикл

Код = КодСимвола(Сред(СтрокаПараметр,Сч));

// Большие латинские буквы: 65 - 90
// Маленькие латинские буквы: 97 - 122
// Русские буквы: 192 и больше

//русские:
Если Русские Тогда

Если (СписокДопустимыхЗначений[Код] = Неопределено) и (Код < 192) Тогда
Возврат Ложь;
КонецЕсли;

// латинские:
ИначеЕсли (Код <> 45) и ((Код < 65) или (Код > 90) и (Код < 97) или (Код > 122)) Тогда
Возврат Ложь;
КонецЕсли;

КонецЦикла;

Возврат Истина;

Иначе
Возврат Истина;
КонецЕсли;
КонецФункции

Опубликовано на сайте: https://HelpF.pro
Прямая ссылка: https://HelpF.pro/faq8/view/517.html