首页 > 解决方案 > charAt() 给了我不好的输出

问题描述

我正在制作一种编程语言,分号在 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

标签: javascripthtmlfor-loop

解决方案


首先要做的事情:charAt()是从零开始的,因此您应该在0到达之前开始迭代并结束data.length

for (i = 0; i < data.length; i++) {
    /* ... */
}

如果要存储从 1 开始的索引而不是从 0 开始的索引,只需添加1

lines.push(i + 1);

推荐阅读