gpt4 book ai didi

javascript - 如何在 JavaScript 中对字母进行排序(将大写字母和小写字母组合在一起)?

转载 作者:行者123 更新时间:2023-12-03 21:43:58 30 4
gpt4 key购买 nike

我正在开发一个 JavaScript(如果需要的话,jQuery 也可以,但我怀疑它会)函数来按字母顺序排列一串字母。假设我要排序的字符串是:“ACBacb”。

我现在的代码是这样的:

var string='ACBacb';
alert(string.split('').sort().join(''));

这将返回 ABCabc。我知道为什么会发生这种情况,但这不是我正在寻找的格式。有没有一种方法可以通过将相同的字母放在一起(先大写字母)来对其进行排序?那么当我输入 ACBacb 时,我会得到 AaBbCc?

最佳答案

Array.sort 可以有一个排序函数作为可选参数。

先对字符串进行排序(ACBacbA 变为 AABCabc),然后再对其进行不区分大小写的排序:

function case_insensitive_comp(strA, strB) {
return strA.toLowerCase().localeCompare(strB.toLowerCase());
}

var str = 'ACBacbA';
// split the string in chunks
str = str.split("");
// sorting
str = str.sort();
str = str.sort( case_insensitive_comp )
// concatenate the chunks in one string
str = str.join("");

alert(str);

根据 Felix 的建议,第一个排序函数可以省略并合并到第二个排序函数中。首先,对两个字符进行不区分大小写的比较。如果它们相等,请检查它们区分大小写的等效项。返回 -1 或 1 表示差异,返回 0 表示相等。

function compare(strA, strB) {
var icmp = strA.toLowerCase().localeCompare(strB.toLowerCase());
if (icmp != 0) {
// spotted a difference when considering the locale
return icmp;
}
// no difference found when considering locale, let's see whether
// capitalization matters
if (strA > strB) {
return 1;
} else if (strA < strB) {
return -1;
} else {
// the characters are equal.
return 0;
}
}
var str = 'ACBacbA';
str = str.split('');
str = str.sort( compare );
str = str.join('');

关于javascript - 如何在 JavaScript 中对字母进行排序(将大写字母和小写字母组合在一起)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5285995/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com