如何忽略字符串索引中的空格,并在句子中的每个单词上以大写字母开头
How to ignore spaces in string indexes and start with a capital letter on each word in a sentence
基本上,我有这样的代码,我想将给定的字符串更改为wEiRd CaSe
,在索引之间交替,例如:
从索引0开始,我希望字母为大写,然后当索引为奇数时,如1、3、5等……我想将其更改为大写。
因此:
堆栈溢出应该是Stackoverflow,但我也想处理字符串,像这个这样的字符串
This is a test
应为:ThIs A TeSt
但我的函数返回:ThIs iS A 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("");
}
我的问题可能有点误导,我想成为wEiRd Case,但同时也是单词中第一个大写字母,所以我做了这个:
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(' ');
}
希望这能帮助
您可以添加另一个变量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("");
}
应该像这样简单:
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!"));
以更简单的方式。。。
a = "This is a test"
b = a.split('')
counter = 0
c = b.map(function(c) {
if (c === ' ') return c
if ((counter % 2) === 0) {
counter++
return c.toUpperCase()
}
counter++
return c.toLowerCase()
})
console.log(c.join(''))
我认为这段代码可以简化很多。
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;
}
}
我会做如下操作;
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);
var string= 'Stackoverflow';
for (var i=0; i<string.length; i+=2)
string= string.substr(0,i) + string[i].toUpperCase() + string.substr(i+1);
千万别忘了:对不起,我需要更仔细地阅读。
相关文章:
- 将组成单词的字符添加到数组的开头
- 匹配由单个空格分隔的单词,单词的开头或结尾不能有空格
- 如何在搜索框中获取从特定字母开头的单词
- 如何使用 JavaScript 获取所有以单词开头的 cookie
- 如何将有角度的文本区域设置为仅以特定单词开头
- Regex,替换所有以@开头的单词
- Javascript正则表达式匹配多个单词中至少一个以数字开头的单词,但至少匹配两个单词
- 如何隐藏所有以相同单词开头的 DIV,但一个具有特定值的 DIV 除外
- 替换以下划线开头的单词
- 正则表达式保留/匹配任何以特定字符开头的单词
- 获取以@开头的单词,例如正则表达式和javascript提到的Facebook
- JavaScript单词搜索,从单词的开头开始带空格和不带空格
- JavaScript正则表达式搜索每个单词和后续单词的开头
- 以相同元音字母开头和结尾的匹配单词
- 只允许HTML字段以某些单词开头
- 计算以特定单词开头的行中的单词数
- 如何在字符串中查找以一个单词开头并以另一个单词结尾的文本的第一次出现
- 删除字符串中单词开头和结尾的标点符号
- 匹配所有以特定单词开头和结尾的摘录
- 如何获取以单词开头的跨度 ID