我正在编写一种编程语言,而在JavaScript中使用分号,而在我的语言中则使用斜杠。
代码如下:
document.getElementsByTagName("input")[0].addEventListener("change", function() {
var file = document.getElementsByTagName("input")[0].files[0];
var reader = new FileReader();
reader.onload = function(evt) {
var lines = [];
var data = evt.target.result;
var i;
var j;
for (i = 1; i <= data.length; i++) {
var search = data.charAt(i);
if("/" === search){
lines.push(i);
}
}
document.body.innerText = lines.toString();
};
reader.readAsText(file, "UTF-8");
}, false);
<body>
<input type="file">
<div>
</div>
</body>
它应该输出斜线的位置,但是每次运行文件时,它会告诉我字符在斜线之后的位置。
我知道我可以使用一些数学方法来摆脱它,但是为什么会这样呢?
感谢,EthanZoneCoding
答案 0 :(得分:1)
第一件事:charAt()
是从零开始的,因此您应该从0
开始迭代,并在到达data.length
之前结束:
for (i = 0; i < data.length; i++) {
/* ... */
}
如果要存储从一开始的索引而不是从零开始的索引,只需添加1
就可以了:
lines.push(i + 1);