var mychars = 'abcdefghijklmnopqrstuvwxyz';
for (i = 0; i < mychars.length; i++) {
alert(i.toString() + " - " + mychars.substring(i, 1));
}
首先为什么子串(1,1)不返回任何东西?为什么之后的所有内容都会打印多个字符?
答案 0 :(得分:4)
javascript substring
方法有两个参数:from和from indexss。从您的代码示例中看起来您的行为就像它(从,长度)一样。尝试将您的代码更改为以下
alert(i.toString() + " - " + mychars.substring(i, i + 1));
答案 1 :(得分:2)
@JaredPar和@Tim Cooper已经向你解释了发生了什么。我只想注意您应该使用接受from
和length
参数的String.substr()
方法。
答案 2 :(得分:1)
这完全出现在“substring()”的奇怪工作中。
当“i”为1时,你要求从位置1到位置1 - 1的所有字符,这根本就不是字符。
来自Mozilla文档:
如果indexA大于indexB,那么substring的效果就好像交换了两个参数一样;例如,str.substring(1,0)== str.substring(0,1)。
因此,对于大于1的“i”,您将获得“substring(1,i)”而不是“substring(i,1)”的效果。惊喜!
答案 3 :(得分:0)
答案 4 :(得分:0)
第二个参数不是它将获得的字符数,而是字符的索引。
所以(0,1)从无到有'a',1,1从'b'到'b',意味着空的空间,(2,1)从'c'变为'b'等等类推。