要清除: 我不想知道如何大写,但是我想知道为什么我可以在一维而不是二维上更改它
我正在做一些编码挑战以熟悉JavaScript。
我将给定字符串中每个单词的首字母大写。
我通过String.match(regex);
var word_array = str.match(/\w(\w)*/g);
然后我从单词中创建另一个字母分隔的数组来更改单个字母。 (也使用正则表达式)
letter_array = word_array[i].match(/\w/g);
letter_array[0] = letter_array[0].toUpperCase();
这很好用。
但是我希望它短一些,所以我尝试对word_array的第二维上的字母执行操作,但是完全没有效果。
word_array[i][0] = word_array[i][0].toUpperCase();
完整代码段
const input = document.querySelector("#string"),
button = document.querySelector("#DOIT");
button.addEventListener("click", function(){
LetterCapitalize(input.value);
});
function LetterCapitalize(str) {
var word_array = str.match(/\w(\w)*/g);
for(let i = 0; i < word_array.length; i++){
//This part works
letter_array = word_array[i].match(/\w/g);
letter_array[0] = letter_array[0].toUpperCase();
word_array[i] = letter_array.join("");
//this doesn't
/*
word_array[i][0] = word_array[i][0].toUpperCase();
console.log(word_array[i][0]);
*/
}
console.log(word_array);
str = word_array.join(" ");
return str;
}
<input id="string" type="text"/>
<button id="DOIT">DO IT</button>
答案 0 :(得分:0)
这是行不通的,因为字符串在javascript中是不可变的。
- @testrun.testcase.reject(&:empty?).each do |i|
- trClass = ""
- trClass = "danger" if @testrun.testcases_output["#{i}"]["status"]=="Failed"
- trClass = "success" if @testrun.testcases_output["#{i}"]["status"]=="Success"
tr{class: trClass}
td = "#{i}"
当您将字符串转换为自然可变的列表/数组时,代码被截断了。尽管id指出这个问题可能是重复的。这是capitalization in javascript question