我一直在使用我一直在学习/知道的东西来练习简单的解决方案。
我面临的问题是,如何将字符串中的大写字母移到前面?
我已经解决了它,但这不是我的期望,因为我最初的想法是→找到大写字母→将它们放入数组中→将大写字母与原始字符串数组连接起来,并在其中删除大写字母。
因此我的问题是,如何删除第一个条件语句中的大写字母,这样我就不需要创建另一个条件语句来查找小写字母并将小写字母存储在数组中?
例如,输入字符串是 'heLLo' → 输出将是 'LLheo'(大写字母现在在前面)。
谢谢!

function capToFront(s) {
    var sp = s.split("");
    var caps = [];
    var lower = []
    for (var i = 0; i < sp.length; i++)
        {
            if (sp[i] == sp[i].toUpperCase()){
                caps.push(sp[i]);
           **//How can i remove the capital letter in "sp" array as I've pushed them into the caps Array**

            }
            if (sp[i] == sp[i].toLowerCase()){
                lower.push(sp[i]);
            }
        }
    return caps.join("").concat(lower.join(""));
}

最佳答案

使用 RegExp ,您可以在没有任何循环的情况下在一行中完成您的目标:

const result = [...'heLLo'].sort(l => /[A-Z]/.test(l) ? -1 : 0).join('');

console.log(result); // LLheo

如果要确保保留大写字母之间的原始顺序,则会稍长一些:

const result = [...'Hello World Foo Bar']
  .sort((a, b) => /[A-Z]/.test(a) ? /[A-Z]/.test(b) ? 0 : -1 : 0)
  .join('');

console.log(result); // HWFBello orld oo ar

关于javascript - 如何将所有大写字母移动到字符串的开头?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/62977281/

10-12 00:07