javascript - 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
解决方案
首先要做的事情:charAt()
是从零开始的,因此您应该在0
到达之前开始迭代并结束data.length
:
for (i = 0; i < data.length; i++) {
/* ... */
}
如果要存储从 1 开始的索引而不是从 0 开始的索引,只需添加1
:
lines.push(i + 1);
推荐阅读
- c# - 在添加到列表之前更新对象
- python - 油罐没有出现
- php - 通过 file_get_contents 传递 X-Api-Key
- python - 如何使用 sklearn KNN 预测值
- r - R中的结构性中断:绘制趋势
- blazor - 在 blazor 中以增量方式向数组中添加内容而不重新渲染整个数组的正确方法是什么?
- python - 从关键字参数生成参数字典
- c - 使用 C netfilter lib 列出自定义链
- collections - ASP.NET Core 5 MVC:将模型绑定复杂集合发布回控制器实例化 vm 但没有数据
- jmeter - JMeter - 添加客户端证书和密钥