javascript正则表达式
我正在寻找一种替代C#Split的方法,在这里我可以传递字符串数组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
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)"]