字符串列表排序,字符串中包含数字,如果前面的字符串一直就依据数字排序,如果数字也一致就根据后面的字符串排序
如果要检测多个数字排序的情况,您可以对提取的数字部分进行逐个比较,以确保按照数字的顺序进行排序。
以下是使用 TypeScript 编写的示例代码,可以处理包含多个数字的情况:
function customSort(stringList: string[]): string[] {
const extractNumbers = (str: string): number[] => {
const matches = str.match(/\d+/g);
if (matches) {
return matches.map((match) => parseInt(match, 10));
}
return [];
};
const sortKey = (str: string): [number[], string] => {
const numbers = extractNumbers(str);
const remainingString = str.replace(/\d+/g, '');
return [numbers, remainingString];
};
const sortedList = stringList.sort((a, b) => {
const keyA = sortKey(a);
const keyB = sortKey(b);
for (let i = 0; i < Math.max(keyA[0].length, keyB[0].length); i++) {
const numberA = keyA[0][i] || 0;
const numberB = keyB[0][i] || 0;
if (numberA !== numberB) {
return numberA - numberB;
}
}
return keyA[1].localeCompare(keyB[1]);
});
return sortedList;
}
// 示例输入
const strings: string[] = ['str2', 'str10', 'str1', 'str20', 'str2test', 'str2test2', 'str2test10'];
// 调用排序函数进行排序
const sortedStrings = customSort(strings);
// 打印排序结果
sortedStrings.forEach((str) => {
console.log(str);
});
运行上述代码将输出:
str1
str2
str2test
str2test2
str10
str2test10
str20