diff --git a/app/utils/string.py b/app/utils/string.py index 353f807c..6c0b5437 100644 --- a/app/utils/string.py +++ b/app/utils/string.py @@ -938,3 +938,15 @@ class StringUtils: if isinstance(content, bytes) and content.startswith(b"magnet:"): return True return False + + @staticmethod + def natural_sort_key(text: str) -> List[Union[int, str]]: + """ + 自然排序 + 将字符串拆分为数字和非数字部分,数字部分转换为整数,非数字部分转换为小写字母 + :param text: 要处理的字符串 + """ + if not isinstance(text, str): + return [text] + + return [int(part) if part.isdigit() else part.lower() for part in re.split(r'(\d+)', text)]