Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 每次出现算术运算符时拆分字符串_Javascript_String_Split - Fatal编程技术网

Javascript 每次出现算术运算符时拆分字符串

Javascript 每次出现算术运算符时拆分字符串,javascript,string,split,Javascript,String,Split,我有以下变量 var arithmetic = "96-66.33+99.3/22*58.2"; var arr; var operator = "/*+-^"; 我想在操作符变量的每次出现或索引时拆分算术 最终结果将是[“96”、“-66.33”、“+99.3”、“/22”、“*58.2”] V.Roudge提供的最终解决方案 var算术=“96-66.33+99.3/22*58.2”; 算术=算术.分割(/(?=[-+*\/])/); console.log(算术) var算术=“96-

我有以下变量

var arithmetic = "96-66.33+99.3/22*58.2";
var arr;
var operator = "/*+-^";
我想在
操作符
变量的每次出现
索引
时拆分
算术


最终结果将是
[“96”、“-66.33”、“+99.3”、“/22”、“*58.2”]

V.Roudge提供的最终解决方案

var算术=“96-66.33+99.3/22*58.2”;
算术=算术.分割(/(?=[-+*\/])/);
console.log(算术)
var算术=“96-66.33+99.3/22*58.2”;
var-arr;
var运算符=“/*+-^”;
对于(var i=0;i
var算术=“96-66.33+99.3/22*58.2”;
var-arr=[];
var运算符=“/*+-^”;
变量re=/[+-\/\*]/;
arr=算术分割(re);

控制台日志(arr)我能帮你通过regexp。非常接近,但还不完全是

var arithmetic = "96-66.33+99.3/22*58.2";
arithmetic = arithmetic.split(/([-+*\/])/g);
console.log(arithmetic);
编辑:明白了

var arithmetic = "96-66.33+99.3/22*58.2";
arithmetic = arithmetic.split(/(?=[-+*\/])/);
console.log(arithmetic);
var算术=“96-66.33+99.3/22*58.2”;
算术=算术.分割(/(?=[-+*\/])/);

console.log(算术)为它编写了一个简单的解析器。。但我认为regex方式更好

var算术=“96-66.33+99.3/22*58.2”;
var运算符={
“+”:对,
“-”:对,
“*”:正确,
“/”:对
};
var-tokenList=[];
var token=“”;
var op=“”;
对于(变量i=0;i<算术长度;++i){
if(运算符[算术[i]]){
tokenList.push(op+token);
令牌=”;
op=算术[i];
}否则{
令牌+=算术[i];
}
}
tokenList.push(op+token);

console.log(令牌列表)
似乎是一个简单的解析器。但是,如果您实际上是在构建数学,而不是Smalltalk式的数学,那么您可能需要一个实际的解析器(仍然很简单),这样操作顺序就正确了。为什么最终结果不会从
96-66.33
中分离出来呢?
算术变量是用户的输入,我想获取第一个表达式,然后继续添加数组中的其他项(如果可用)。
算术变量可能是数组中的唯一表达式,因此不需要拆分。@DaveNewton,@Mike McCaughan,如果我能实现这一
[“96”、“-66.33”、“+99.3”、“/22”、“*58.2”]我将不胜感激。似乎我想要的是复杂的。看我的答案。;)你不明白我的问题。请再次参考问题。最终结果将是
[“96-66.33”、“+99.3”、“/22”、“*58.2”][“96”、“-66.33”、“+99.3”、“/22”、“*58.2”]我将不胜感激。看来我想要的是复杂的你不明白我的问题。请参阅问题again@Abk哦,那你必须做帕辛这不会返回OP的要求。我不确定我是否做对了。他期望得到什么回报?他在问题中要求的回报?很好的解决方案bro@Abk从正则表达式中删除
-
将获得所需的结果