多个字符串拆分javascript

时间:2016-05-27 14:33:04

标签: javascript

我正在处理一个在数据库的记录字段中注入一个查询的应用程序。 目前我需要一个包含查询的字符串并用逗号分隔

这是字符串

APDoc.brn, APDoc.rbtn, APDoc.perd, APDoc.dtip, APDoc.U5, APDoc.Stt, APDoc.Ivcn, APDoc.InvcD, APDoc.Vndd AS Rut, Venr.ae AS Proveedor, APDoc.At, CASE APDoc.Dcype WHEN 'AD' THEN APDoc.OgDocmt * -1  WHEN 'PP' THEN APDoc.OrocAmt * -1 ELSE APDoc.OrocAmt END AS [Monto Fac], APDoc.POr, APDoc.Sb AS Entidad, APDoc.ProjeD, CASE APDoc.Dype WHEN 'AD' THEN APDoc.Dal * -1 WHEN 'PP' THEN APDoc.Dal * -1 ELSE APDoc.Dal END AS Saldo,  datediff(day, APDoc.Inate, GETDATE()) AS DIFERENCIA_DIAS 

通过split()和join()

分隔它们基本上没有问题
queryCortada      = queryCortada.split("AND").join(",").split("OR").join(",").split("(").join("").split(")").join("").split(",");

问题是最后一个字段将其分为以下

datediff(day,
APDoc.Inate,
GETDATE()) AS DIFERENCIA_DIAS 

我需要这个领域只有一个,想法是有以下

APDoc.brn,
APDoc.rbtn,
APDoc.perd,
APDoc.dtip,
APDoc.U5,
APDoc.Stt,
APDoc.Ivcn,
APDoc.InvcD,
APDoc.Vndd AS Rut,
Venr.ae AS Proveedor,
APDoc.At,
CASE APDoc.Dcype WHEN 'AD' THEN APDoc.OgDocmt * -1  WHEN 'PP' THEN APDoc.OrocAmt * -1 ELSE APDoc.OrocAmt END AS [Monto Fac],
APDoc.POr, APDoc.Sb AS Entidad,
APDoc.ProjeD, CASE APDoc.Dype WHEN 'AD' THEN APDoc.Dal * -1 WHEN 'PP' THEN APDoc.Dal * -1 ELSE APDoc.Dal END AS Saldo,
datediff(day, APDoc.Inate, GETDATE()) AS DIFERENCIA_DIAS

原始文本可以包含多个字段作为datediff(asdas,asdasd,asdasd)

2 个答案:

答案 0 :(得分:0)

要做到这一点,您需要编写复杂的正则表达式或通过词法状态机解析字符串。

即使您认为今天已经涵盖了基础,简单拆分也会导致未来陈述出现问题。

答案 1 :(得分:0)

你可以尝试一下吗?

queryCortada.replace(/\((.*)\)+/g, "(temp**comma)").split("AND").join(",").split("OR").join(",").split("(").join("").split(")").join("").replace(/temp\*\*comma/g, ",").split(",");