JavaScript中按+、-符号分割字符串返回数组长度恒为1的问题求解
问题原因
- 取值时机错误:获取输入框值的逻辑写在全局作用域,页面加载时就执行,此时用户还未输入内容,后续点击按钮调用
equals函数时读取的始终是页面初始化的旧值,不是用户输入的最新内容。 - 正则规则错误:你写的
/\+\-/正则匹配的是+后紧跟-的连续字符串,并非匹配+、-中的任意一个字符,只要输入内容里没有+-连续出现的情况,split就不会拆分,返回的数组长度始终为1。
修正方案
修正后的JavaScript代码如下:
function equals(){ // 每次触发函数时实时读取输入框最新值 var equation = document.getElementById('mainbox').value // 使用字符集正则匹配+或-任意一个字符进行分割 var equationSplit = equation.split(/[+-]/); console.log(equationSplit) }
如果后续需要做计算器运算,要保留+、-符号用于判断运算类型,可以把正则改为带捕获组的形式,分割后符号也会保留在数组中:
// 分割后格式示例:["123", "+", "456", "-", "78"] var equationSplit = equation.split(/([+-])/);
内容的提问来源于stack exchange,提问作者CATFISHDAVE612
相关产品推荐
相关产品推荐

