Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/463.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/regex/19.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_Regex_Split - Fatal编程技术网

javascript正则表达式

javascript正则表达式,javascript,regex,split,Javascript,Regex,Split,我正在寻找一种替代C#Split的方法,在这里我可以传递字符串数组 string[] m_allOps = { "*", "/", "+", "-", "<", ">", "=", "<>", "<=", ">=", "&&", "||" }; string s = "@ans = .707 * sin(@angle)"; string[] tt = s.Split(m_allOps,StringSplitOptions.RemoveEmpty

我正在寻找一种替代C#Split的方法,在这里我可以传递字符串数组

string[] m_allOps = { "*", "/", "+", "-", "<", ">", "=", "<>", "<=", ">=", "&&", "||" };
string s = "@ans = .707 * sin(@angle)";
string[] tt = s.Split(m_allOps,StringSplitOptions.RemoveEmptyEntries);      // obtain sub string for everything in the equation that is not an operator
string[]m_allOps={“*”、“/”、“+”、“-”、“、”、“=”、“、”=”、“&&“、“||”};
字符串s=“@ans=.707*sin(@angle)”;
string[]tt=s.Split(m_allOps,StringSplitOptions.removeMptyEntries);//获取方程中所有非运算符的子字符串

我确信有一个使用regEx的解决方案,但我似乎不知道如何构造正则表达式。

首先,在RegExp原型上获得一个
escape
扩展方法(使用.NET术语):

然后:

var m_allOps=[“*”、“/”、“+”、“-”、“、”、“=”、“、”、“=”、“&&-”];
var splitPattern=newregexp(m_allOps.map(RegExp.escape).join(“|”);
//结果:/\*|\/|\+|\-||=||=|&&|\|\|/
var s=“@ans=.707*sin(@angle)”;
var tt=s.split(splitPattern).filter(函数(项){
退货项目!=“”;
});
//结果:[“@ans”,“.707”,“sin(@angle)”]

如果filter函数是StringSplitOptions.RemoveEmptyEntries的替代品,首先,在RegExp原型上获得一个扩展方法(使用.NET术语):

然后:

var m_allOps=[“*”、“/”、“+”、“-”、“、”、“=”、“、”、“=”、“&&-”];
var splitPattern=newregexp(m_allOps.map(RegExp.escape).join(“|”);
//结果:/\*|\/|\+|\-||=||=|&&|\|\|/
var s=“@ans=.707*sin(@angle)”;
var tt=s.split(splitPattern).filter(函数(项){
退货项目!=“”;
});
//结果:[“@ans”,“.707”,“sin(@angle)”]

其中filter函数替换
StringSplitOptions.removeMptyEntries

您想要什么作为输出?@ans.707,sin(@angle)对于这种情况,请参见您想要什么作为输出?@ans.707,sin(@angle)对于这种情况,请参见
。filter(函数(项){return item!=”;})
可以替换为
。filter(布尔)
。可能是的。但这并不明显。我得到了这个错误JavaScript运行时错误:Array.prototype.map:参数不是函数对象。但那没关系,我只使用文字分割模式。你在什么浏览器上
Array.prototype.map
(etc)应在上提供;支持浏览器的列表可以追溯到IE9。如果您的平台上不可用,请考虑添加,这些方法添加了这些方法。@ Tomalak不是“代码>数组。原型。map < /代码>他丢失了,它是代码> ReXEP。逃逸< /代码> .Case>筛选器(函数(项){返回项!=“”;})<代码>可以用<代码>替换。过滤器(布尔)< /代码>。是的,可能是。但这并不明显。我得到了这个错误JavaScript运行时错误:Array.prototype.map:参数不是函数对象。但那没关系,我只使用文字分割模式。你在什么浏览器上
Array.prototype.map
(etc)应在上提供;支持浏览器的列表可以追溯到IE9。如果在您的平台上不可用,请考虑添加,这些方法添加了这些方法。@ Tomalak不是“代码>数组。原型。map < /代码>他丢失了,它是代码> ReGEXP。
var m_allOps = ["*", "/", "+", "-", "<", ">", "=", "<>", "<=", ">=", "&&", "||"];
var splitPattern = new RegExp( m_allOps.map(RegExp.escape).join('|') );
// result: /\*|\/|\+|\-|<|>|=|<>|<=|>=|&&|\|\|/

var s = "@ans = .707 * sin(@angle)";
var tt = s.split(splitPattern).filter(function (item) {
    return item != "";
});
// result: ["@ans ", " .707 ", " sin(@angle)"]