我想将大小写混合转换为字符串。例如,如果我有字符串Mark
,则需要输出为mARk
或Lewis
来转换为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, '');
}
答案 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"));