我有一个如下的ab数组:
const operators = ['<','>','>=','<>','=']
和类似这样的字符串:
const myStr = 'Some Operand > Some Other Operand'
正如您在此字符串中看到的那样,我有一个>
字符存在于运算符数组中,现在我想根据数组中存在的运算符来拆分字符串。我知道我可以使用正则表达式来做到这一点,但我不知道该怎么做
答案 0 :(得分:1)
您可以使用竖线(<|>|>=|<>|=)
在正则表达式中定义alternation,这将匹配指定的模式之一(您的运算符)。
您可以将正则表达式传递给split()
function:
function f(s) { return s.split(/(<>|>=|>|<|=)/); }
console.log(f("Some Operand > Some Other Operand"));
console.log(f("Some Operand >= Some Other Operand"));
编辑:在上面的正则表达式中,我首先编写了2个字符的运算符,然后编写了单字符的运算符。这样,它将正确匹配所有运算符。您甚至可以使用optionals来简化正则表达式:
function f(s) { return s.split(/(<>?|>=?|=)/); }
console.log(f("Some Operand > Some Other Operand"));
console.log(f("Some Operand >= Some Other Operand"));
如果您希望在不使用正则表达式的情况下执行此操作,可以签出使用split
和join
函数的this answer。