20250930-1
This commit is contained in:
@@ -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);
|
||||||
|
@@ -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")
|
Reference in New Issue
Block a user