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
from string_extension_constant import StringExtensionConstant
class StringExtension:
"""
Расширение строк.
"""
__RUSSIAN_LETTERS = set('а', 'б', 'в', 'г', 'д', 'е', 'ё', 'ж', 'з', 'и', 'й', 'к', 'л', 'м', 'н', 'о', 'п', 'р', 'с', 'т', 'у', 'ф', 'х', 'ц', 'ч', 'ш', 'щ', 'ъ', 'ы', 'ь', 'э', 'ю', 'я', 'А', 'Б', 'В', 'Г', 'Д', 'Е', 'Ё', 'Ж', 'З', 'И', 'Й', 'К', 'Л', 'М', 'Н', 'О', 'П', 'Р', 'С', 'Т', 'У', 'Ф', 'Х', 'Ц', 'Ч', 'Ш', 'Щ', 'Ъ', 'Ы', 'Ь', 'Э', 'Ю', 'Я')
/ **
* @ var
array | string[] $RussianLettersTransliteration
Набор
русских
букв
в
транслитерации
* /
private
static
array $RussianLettersTransliteration =
[
"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))
// - то
def Compare(self, str1, str2, ignore_case=False):
("""
Сравнивает две строки.
:param str1: Первая строка.
:param str2: Вторая строка.
:param ignore_case: Игнорировать регистр. По умолчанию, False.
:return: Результат сравнения. Возвращаемые значения:
-1 | значение $str1 меньше значения $str2.
0 | значения $str1 и $str2 равны.
1 | значение $str1 больше значения $str2.
"""
# Если обе строки пусты
# if (self::IsNullOrWhitespace($str1) and self::sNullOrWhitespace($str2)):
# // - то
равны
return 0;
@@ -84,7 +34,7 @@ return 0;
второй
пуст
if (!self::IsNullOrWhitespace($str1) & & self: :
IsNullOrWhitespace($str2))
IsNullOrWhitespace($str2))
// - то
первый
больше
@@ -99,7 +49,7 @@ return 1;
не
пуст
if (!self::IsNullOrWhitespace($str1) & & self: :
IsNullOrWhitespace($str2))
IsNullOrWhitespace($str2))
// - то
первый
меньше
@@ -226,8 +176,8 @@ if ($ignoreCase)
// - если это буква из русского алфавита
if (self::
IsRussianLetter($letter)) {
// -- транслитерирую
IsRussianLetter($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")