【问题标题】:Converting Odd and Even-indexed characters in a string to uppercase/lowercase in Javascript?在Javascript中将字符串中的奇数和偶数索引字符转换为大写/小写?
【发布时间】:2017-05-18 02:18:48
【问题描述】:

我需要创建一个函数来读取字符串输入并将字符串中的奇数索引字符转换为大写,偶数转换为小写。

function alternativeCase(string){
    for(var i = 0; i < string.length; i++){
        if (i % 2 != 0) {
            string[i].toUpperCase();
        }
        else {
            string[i].toLowerCase();
        }   
    }
    return string;
}

如何修复我的代码?

【问题讨论】:

标签: javascript string uppercase lowercase


【解决方案1】:
function alternativeCase(string){
  return string.split('').map(function(c,i) {
    return i & 1 ? c.toUpperCase() : c.toLowerCase();
  }).join('');
}

2019 年更新

现在使用 ES6 语法相当安全:

const alternativeCase = string => string.split('')
  .map((c,i) => i & 1 ? c.toUpperCase() : c.toLowerCase()).join('');

【讨论】:

    【解决方案2】:

    试试这个:

    function alternativeCase(string){
        var output = "";
        for(var i = 0; i < string.length; i++){
            if (i % 2 != 0) {
                output += string[i].toUpperCase();
            }
            else {
                output += string[i].toLowerCase();
             }   
        }
        return output;
    }
    

    【讨论】:

    • 谢谢!这对我来说非常有用!我的代码离我不远了!
    • 不,你不是很远,你很近!正如其他 cmets 所提到的,JS 中的字符串是“不可变的”,这意味着如果不将其分配给新变量(或自身),它们就无法在内存中更改,这就是为什么您不能以您的方式在字符串中设置字符的原因是。这是你方法的唯一问题。
    【解决方案3】:

    JavaScript 中的字符串是不可变的,试试这个:

    function alternativeCase(string){
         var newString = [];
         for(var i = 0; i < string.length; i++){
            if (i % 2 != 0) {
               newString[i] = string[i].toUpperCase();
            }
            else {
               newString[i] = string[i].toLowerCase();
            }   
         }
       return newString.join('');
    }

    【讨论】:

      【解决方案4】:

      处理字符之间空格的RegExp替代方法:

      const alternativeCase = s => s.replace(/(\S\s*)(\S?)/g, (m, a, b) => a.toUpperCase() + b.toLowerCase());
      
      console.log( alternativeCase('alternative Case') )

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2018-12-28
        • 2018-09-07
        • 2014-03-30
        • 2017-05-18
        • 2021-06-11
        • 2018-01-13
        相关资源
        最近更新 更多