20250930-1

This commit is contained in:
2025-10-01 07:15:15 +03:00
parent 9d51932132
commit 3774e426f8
2 changed files with 41 additions and 70 deletions

View File

@@ -1,77 +1,27 @@
# anb_python_components/extensions/string_extension.py # anb_python_components/extensions/string_extension.py
from string_extension_constant import StringExtensionConstant
class StringExtension: class StringExtension:
""" """
Расширение строк. Расширение строк.
""" """
__RUSSIAN_LETTERS = set('а', 'б', 'в', 'г', 'д', 'е', 'ё', 'ж', 'з', 'и', 'й', 'к', 'л', 'м', 'н', 'о', 'п', 'р', 'с', 'т', 'у', 'ф', 'х', 'ц', 'ч', 'ш', 'щ', 'ъ', 'ы', 'ь', 'э', 'ю', 'я', 'А', 'Б', 'В', 'Г', 'Д', 'Е', 'Ё', 'Ж', 'З', 'И', 'Й', 'К', 'Л', 'М', 'Н', 'О', 'П', 'Р', 'С', 'Т', 'У', 'Ф', 'Х', 'Ц', 'Ч', 'Ш', 'Щ', 'Ъ', 'Ы', 'Ь', 'Э', 'Ю', 'Я')
/ ** def Compare(self, str1, str2, ignore_case=False):
* @ var ("""
array | string[] $RussianLettersTransliteration Сравнивает две строки.
Набор :param str1: Первая строка.
русских :param str2: Вторая строка.
букв :param ignore_case: Игнорировать регистр. По умолчанию, False.
в :return: Результат сравнения. Возвращаемые значения:
транслитерации -1 | значение $str1 меньше значения $str2.
* / 0 | значения $str1 и $str2 равны.
private 1 | значение $str1 больше значения $str2.
static """
array $RussianLettersTransliteration = # Если обе строки пусты
[ # if (self::IsNullOrWhitespace($str1) and self::sNullOrWhitespace($str2)):
"a", "b", "v", "g", "d", "e", "yo", "zh", "z", "i", "j", # // - то
"k", "l", "m", "n", "o", "p", "r", "s", "t", "u", "f",
"h", "c", "ch", "sh", "sch", "j", "i", "j", "e", "yu", "ya",
"A", "B", "V", "G", "D", "E", "Yo", "Zh", "Z", "I", "J",
"K", "L", "M", "N", "O", "P", "R", "S", "T", "U", "F",
"H", "C", "Ch", "Sh", "Sch", "J", "I", "J", "E", "Yu", "Ya"
];
/ **
*Сравнивает
две
строки.
*
* @ param
string | null $str1
Первая
строка.
* @ param
string | null $str2
Вторая
строка.
* @ param
bool $ignoreCase
Игнорировать
регистр.
*
* @ return int
Результат
сравнения.Возвращаемые
значения:
*
*-1 | значение $str1
меньше
значения $str2.
*0 | значения $str1
и $str2
равны.
*1 | значение $str1
больше
значения $str2.
* /
public
static
function
Compare(string | null $str1, string | null $str2, bool $ignoreCase = false): int
{
// Если
оба
пусты
if (self::IsNullOrWhitespace($str1) & & self: :
IsNullOrWhitespace($str2))
// - то
равны равны
return 0; return 0;
@@ -84,7 +34,7 @@ return 0;
второй второй
пуст пуст
if (!self::IsNullOrWhitespace($str1) & & self: : if (!self::IsNullOrWhitespace($str1) & & self: :
IsNullOrWhitespace($str2)) IsNullOrWhitespace($str2))
// - то // - то
первый первый
больше больше
@@ -99,7 +49,7 @@ return 1;
не не
пуст пуст
if (!self::IsNullOrWhitespace($str1) & & self: : if (!self::IsNullOrWhitespace($str1) & & self: :
IsNullOrWhitespace($str2)) IsNullOrWhitespace($str2))
// - то // - то
первый первый
меньше меньше
@@ -226,8 +176,8 @@ if ($ignoreCase)
// - если это буква из русского алфавита // - если это буква из русского алфавита
if (self:: if (self::
IsRussianLetter($letter)) { IsRussianLetter($letter)) {
// -- транслитерирую // -- транслитерирую
эту эту
букву букву
$resultTransliteration = self::TransliterationFromRussian($letter); $resultTransliteration = self::TransliterationFromRussian($letter);

View File

@@ -0,0 +1,21 @@
# anb_python_components/extensions/string_extension_constant.py
class StringExtensionConstants:
"""
Константы для расширения строк.
"""
# Кортеж из русских букв
russian_letters = ('а', 'б', 'в', 'г', 'д', 'е', 'ё', 'ж', 'з', 'и', 'й', 'к', 'л', 'м', 'н', 'о', 'п', 'р',
'с', 'т', 'у', 'ф', 'х', 'ц', 'ч', 'ш', 'щ', 'ъ', 'ы', 'ь', 'э', 'ю', 'я', 'А', 'Б', 'В',
'Г', 'Д', 'Е', 'Ё', 'Ж', 'З', 'И', 'Й', 'К', 'Л', 'М', 'Н', 'О', 'П', 'Р', 'С', 'Т', 'У',
'Ф', 'Х', 'Ц', 'Ч', 'Ш', 'Щ', 'Ъ', 'Ы', 'Ь', 'Э', 'Ю', 'Я')
# Кортеж из русских букв в транслитерации
russian_letters_transliteration = ("a", "b", "v", "g", "d", "e", "yo", "zh", "z", "i", "j",
"k", "l", "m", "n", "o", "p", "r", "s", "t", "u", "f",
"h", "c", "ch", "sh", "sch", "j", "i", "j", "e", "yu", "ya",
"A", "B", "V", "G", "D", "E", "Yo", "Zh", "Z", "I", "J",
"K", "L", "M", "N", "O", "P", "R", "S", "T", "U", "F",
"H", "C", "Ch", "Sh", "Sch", "J", "I", "J", "E", "Yu", "Ya")