字符计数器不会打印所有字符
Character Counter won't print all Characters
我正在制作一个字符计数器作为爱好代码。到目前为止,它正在工作,但我有一个似乎无法解决的故障。当我写术语" a,b,c
"时,它正确地写a:1 b:1 c:1
.但是当我写" a,a,c,c
"时,它只写a:2
.我不确定出了什么问题。这是我代码的 JavaScript 部分(myFunction
由按钮激活,testinput.value
是我正在使用的文本框的值):
function myFunction() {
var occurence = document.getElementById("testinput").value;
var cycleOne = ["a", "b", "c", "d", "e", "f", "g", "h", "i", "j", "k", "l", "m", "n", "o", "p", "q", "r", "s", "t",
"u", "v", "w", "x", "y", "z"
];
for (i = 0; i < 26; i++) {
var counter = new RegExp(cycleOne[i], 'g');
document.write(occurence.match(counter).length);
}
}
它只打印2
,因为在那之后立即失败并出现错误。
让我们考虑输入a,a,c,c
的情况。
在循环的第一次迭代中,您将与a
匹配,然后它找到两个匹配项并打印它。
在第二次迭代中,您将与b
匹配,并且字符串中不存在它。因此,occurence.match(counter)
将返回null
,并且您正在尝试从null
获得length
属性。这就是为什么它抛出错误
类型错误: 无法读取 null 的属性"长度"
并停止执行。
要解决此问题,您需要检查它是否未null
,然后再继续,如下所示
var result = occurence.match(new RegExp(cycleOne[i], 'g'));
if (result !== null) {
console.log(result.length);
}
相关文章:
- 跳过x个字符后,如何打印特定字符串
- 打印regex之后的最后一个字符
- 如何替换不可打印的unicode字符(Javascript)
- 打印出字符串中所有单词的最后一个字符
- Javascript - 如何获取字符串,打印单词,字符,空格,平均单词长度的#并作为对象返回
- 如何仅允许特定打印范围的按键事件中的字符
- 从 utf-8 代码打印/输出 utf-8 字符
- 按特定键时打印特定字符
- 字符计数器不会打印所有字符
- Unicode字符转义序列在handle.js中打印不正确
- 如果jQuery中包含特定字符,则打印每个字符串
- JS document.write函数并打印字符^
- 当单击字符标记时,将值打印到特定的表单文本框值中
- 匹配非打印/非ascii字符并从文本中删除
- 如何在Python 2.7中打印非ascii字符到文件
- 当在keypressup事件中按下单个键时,Textarea打印两个字符
- 镜像输入内容与不可打印的字符,如CTRL, ALT或shift键
- 我的javascript代码只打印一行.我需要它来打印 10 行 20 个字符
- JavaScript打印所有使用的Unicode字符
- 限制Java Script打印输出字符