将var设置为整数,据我所知i++
的意思是递增1。我不明白为什么它会打印变量sentence
的所有字符,而不是所有变量将与长度相对应。
var sentence = "I love learning software development";
for (var i=0; i < sentence.length; i++) {
if (sentence[i] !== " ") {
console.log(sentence[i]);
}
}
答案 0 :(得分:2)
有两种方法可以访问字符串中的单个字符。第一个是
charAt()
方法:
return 'cat'.charAt(1); // returns "a"
另一种方法(在ECMAScript 5中引入)是将字符串视为 类似数组 的对象,其中各个字符对应于一个数字索引:
return 'cat'[1]; // returns "a"
答案 1 :(得分:1)
正如其他人所述,var sentence = "..."
创建了一个字符集合或字符数组,然后您将它们循环遍历。
您的代码做了些微改动以帮助解释。
// Create a string (or an array of characters)
var sentence = "I love learning software development";
// Loop over the length of `sentence`.
// `i` is the index in the array from 0 to `sentence.length`
for (var i=0; i < sentence.length; i++) {
if (sentence[i] !== " ") {
console.log("char:["+ sentence[i] +"] i:["+ i +"]");
}
}
答案 2 :(得分:1)
您的问题并不十分清楚。
是否要将 not 对应的每个字符的索引打印为空格(“ ”)?
如果是这样,下面将这样做。
var sentence = "I love learning software development";
for (var i=0; i < sentence.length; i++) {
if (sentence[i] !== " ") {
console.log(i);
}
}
在上面的代码中,只要索引(i
)上的值不是空格字符,我就在打印索引i
。您的代码sentence[i]
告诉它在索引(i)上打印值,该值将是字符串中该位置的字符。
另一方面,如果要在索引i
处使用Ascii值,则需要使用charAt
函数:sentence.charAt[i]
。
var sentence = "I love learning software development";
for (var i=0; i < sentence.length; i++) {
if (sentence[i] !== " ") {
console.log(sentence.charCodeAt(i));
}
}
正如另一条评论所建议的那样,“ ...而不是所有对应于长度的整数”尚不清楚。
每个给定的字符串只有1个length
。在任何特定时间点的任何数组也是如此。
也许您是说 index ?
每个字符在任何特定的字符串中都有一个唯一的索引。
要通过以下评论回答您的问题:
index: 0 1 2 3 4 5 6 7 8 9 10 11 12 13 ...
sentence: I (space) l o v e (space) l e a r n i n g software development
句子中总共有36个字符。 (如果我计算正确) 索引值从0开始到35 长度是36。但是请记住,最后一个索引号是35,第一个是0。
var sentence = "I love learning software development";
for (var i=0; i < sentence.length; i++) {
console.log("index:", i, "character:", sentence.charAt(i));
}
console.log ("\nlength: ", sentence.length, "index 0 - ", sentence.length-1);
答案 3 :(得分:0)
也许您有另一种语言的经验,索引字符串的字符会返回整数。
在JavaScript中,您将获得字符串的人工表示。该字符串最初以UTF-16编码,转换为二进制,然后存储在内存中。但是,当您访问它时,由于特定于语言的自动转换,您将获得实际的字符串而不是UTF-16代码。
但是,如果您使用的是Node.js,则可以使用缓冲区存储字符串并直接处理二进制数据。
在JavaScript中,如果要获取代码,可以使用 codePointAt(index)方法:
alert( "z".codePointAt(0) ); // 122
alert( "Z".codePointAt(0) ); // 90