如何随机转换大小写混合的字符串

时间:2018-12-17 15:43:52

标签: javascript

我想将大小写混合转换为字符串。例如,如果我有字符串Mark,则需要输出为mARkLewis来转换为lEwIs。如何在原始JavaScript中实现此目标?

注意:转换规则是随机的。

我已经尝试过Camelize函数,但是没有给我期望的输出:

function camelize(str) {
  return str.replace(/(?:^\w|[A-Z]|\b\w)/g, function(letter, index) {
    return index === 0 ? letter.toLowerCase() : letter.toUpperCase();
  }).replace(/\s+/g, '');
} 

2 个答案:

答案 0 :(得分:0)

这可以解决问题。编辑以使其随机

function flipCase(str) { 
  var flip = '';
  for (var i = 0; i < str.length; i++) {
    if(Math.random() > .5){
      flip += str.charAt(i).toUpperCase();
    } else {
      flip += str.charAt(i).toLowerCase();
    }
  }
  return flip;
}

答案 1 :(得分:0)

我知道您在评论中提到过,您希望它是随机的,但是对于其他正在寻找函数来反转大小写的读者,这是一种实现方法:

function camelize(str) {
  var inverted = "";
  for (var i = 0; i < str.length; i++) {
    if (str.charCodeAt(i) >= 65 && str.charCodeAt(i) <= 90)
      inverted += str.charAt(i).toLowerCase();
    else
      inverted += str.charAt(i).toUpperCase();
  }
  return inverted;
}

console.log(camelize("Mark"));
console.log(camelize("Lwies"));

这是使用Array.map()的另一种方式:

function camelize(str) {
  return Array.from(str).map(l => (l.charCodeAt(0) >= 65 && l.charCodeAt(0) <= 90) ? l.toLowerCase() : l.toUpperCase()).join('');
}

console.log(camelize("Mark"));
console.log(camelize("Lwies"));