基本上,我有这段代码,我希望将给定的字符串更改为wEiRd CaSe
,在索引之间交替,例如:
从索引 0开始我希望这封信是大写的,然后当索引变为奇数时,如1,3,5等...我想把它改成大写。
所以:
Stackoverflow应该 StAcKoVeRfLoW ,但我也想使用字符串,像这样的字符串
This is a test
应该是:这是一个TeSt
但是我的功能回归:这是一个TeSt
这是我的代码:
"use strict";
var weirdCase = function(string) {
var characters = string.split("");
characters.forEach(function(value, index, characters) {
// If the index is even
if (index % 2 == 0) {
characters[index] = value.toUpperCase();
} else {
characters[index] = value.toLowerCase();
}
});
return characters.join("");
}
我的问题可能有点误导,我想成为案例,但也要成为首都的第一个字母,所以我这样做了:
function toWeirdCase(string){
return string.split(' ').map(function(word){
return word.split('').map(function(letter, index){
return index % 2 == 0 ? letter.toUpperCase() : letter.toLowerCase()
}).join('');
}).join(' ');
}
希望这有助于某人
答案 0 :(得分:1)
您可以添加另一个变量charIndex
,仅当值不是空格时才手动增加。 charIndex
将表示字符串的索引,就像它没有空格一样。
"use strict";
var weirdCase = function(string) {
var characters = string.split("");
var charIndex = 0;
characters.forEach(function(value, index, characters) {
//Exclude spaces
if (value === " ") {
return;
}
// If the index is even
if (charIndex % 2 == 0) {
characters[index] = value.toUpperCase();
} else {
characters[index] = value.toLowerCase();
}
//Increment charIndex
charIndex += 1;
});
return characters.join("");
}
答案 1 :(得分:1)
应该这么简单:
function WeIrDcAsE(string) {
let isUpperCase = true;
let result = '';
for (let character of string) {
if (isUpperCase) {
result += character.toUpperCase();
} else {
result += character.toLowerCase();
}
if (character.match(/[a-zA-Z]/)) {
isUpperCase = !isUpperCase;
} else {
isUpperCase = true;
}
}
return result;
}
console.log(WeIrDcAsE("This is a test!"));

答案 2 :(得分:0)
答案 3 :(得分:0)
我认为这段代码可以简化很多。
var weirdCase = function(str){
var upper = false;
for (var i = 0; i < str.length; i++){
if (str[i] != ' '){
if (upper){
str[i] = character.toUpperCase();
}else{
str[i] = character.toLowerCase();
}
upper = !upper;
}
}
答案 4 :(得分:0)
我会这样做;
var str = "this is a test",
result = str.split(" ")
.map(s => [].reduce
.call(s, (p,c,i) => p += i & 1 ? c.toLowerCase()
: c.toUpperCase(),""))
.join(" ");
console.log(result);
答案 5 :(得分:0)
var string= 'Stackoverflow';
for (var i=0; i<string.length; i+=2)
string= string.substr(0,i) + string[i].toUpperCase() + string.substr(i+1);
Nev mid,刮开这个:我需要仔细阅读,抱歉。