拆分非常长的javascript字符串

拆分非常长的javascript字符串,javascript,regex,string,reactjs,Javascript,Regex,String,Reactjs,我有一个来自数据库的长字符串,我必须将它分解,并能够将其转换为json格式。我知道这部分我不会有问题,但我正在努力解决如何把它分开 LAST ADMISSION DATE,LAST ASSESSMENT DATE,LAST DISCHARGE DATE,LAST MH SAFETY PLAN,NEXT MH APPT DATE,ON TRACK,PATIENT NAME,PATIENT PRF,PRF REVIEW,^widgetcolumns\nHIGH R

我有一个来自数据库的长字符串,我必须将它分解,并能够将其转换为json格式。我知道这部分我不会有问题,但我正在努力解决如何把它分开

LAST ADMISSION DATE,LAST ASSESSMENT DATE,LAST DISCHARGE DATE,LAST MH 
SAFETY PLAN,NEXT MH APPT DATE,ON TRACK,PATIENT NAME,PATIENT PRF,PRF                 
REVIEW,^widgetcolumns\nHIGH RISK^widget,17|MENTAL HEALTH 
CENTER,^widgetloc,42^instrID,PHQ9^instrName,S^instrScore|\nSUD^widget     
inactive,3180601\nTRIAGE^widgetTRIAGE 
WIDGET^widgettitle5^widgettype\nTRIAGE^widget,LAST APPOINTMENT,PATIENT  
NAME,^widgetcolumns\nTRIAGE^widget,17|MENTAL HEALTH CENTER,26|MENTAL 
HYGIENE-OPC,^widgetloc,\nHIGH RISK^widget,APPOINTMENT DATE,LAST 
ASSESSMENT DATE,MH LAST APPT 
DATE,^criteriafields,RG,GE,GE,^criteriaexp,01/01/2016- 
12/31/2018,01/01/2016,01/01/2010,^criteriaval\nTRIAGE^widget,APPOINTMENT 
DATE,^criteriafields,GE,^criteriaexp,01/01/2015,^criteriaval\nERROR: 
TRIAGE^wdgt,,^BAD APPT DATES\nHIGH 
RISK^widget,1^count,3^dfn,EIGHT,PATIENT^patname,
09/04/2018^reviewdate,ACTIVE^status,HIGH RISK FOR SUICIDE^flag\nHIGH 
RISK^widget,2^count,379^dfn,SEVENTYNINE,PATIENT^patname,
07/01/2018^reviewdate,ACTIVE^status,HIGH RISK FOR SUICIDE^flag\nHIGH 
RISK^widget,3^count,766^dfn,SEVENTYONE,PATIENT^patname,
06/12/2018^reviewdate,ACTIVE^status,HIGH RISK FOR SUICIDE^flag\nHIGH 
RISK^widget,4^count,100848^dfn,AVIVAPATIENT,EIGHT^patname,
01/24/2018^reviewdate,ACTIVE^status,HIGH RISK FOR SUICIDE^flag\n
我为这个超长的字符串提前道歉,但我需要很多

"HIGH RISK^widget,1^count,3^dfn,EIGHT,PATIENT^patname,"
从那根绳子到底。所以,所有我引用的东西都被扔掉了

有没有办法不让我的头撞到墙上?问题是没有任何东西可以硬编码,因为所有数据都因登录者而异

更新:适用于询问所需输出的用户。我希望这是一根大绳子,没有其他东西


提前感谢您的帮助

您可以先去掉所有换行符和换行符,然后用“HIGH”替换从字符串开头到HIGH的第一个实例的所有内容

var str=`最后入院日期、最后评估日期、最后出院日期、最后MH
安全计划、下一个MH应用日期、跟踪、患者姓名、患者PRF、PRF
回顾,^widgetcolumns\n高风险^widget,17 |心理健康
中心,^widgetloc,42^ instrID,PHQ9^ instrName,S^ instrScore | \nSUD^小部件
非活动,3180601\n诊断^widgetriage
小部件^widgettitle5^widgettype\n诊断^WIDGET,上次预约,患者
名称,^widgetcolumns\n诊断^widget,17 |心理健康中心,26 |心理健康中心
卫生-OPC,^widgetloc,\n高风险^widget,预约日期,最后
评估日期,MH上次申请
日期,^criteriafields,RG,GE,GE,^criteriaexp,2016年1月1日-
2018年12月31日,2016年1月1日,2010年1月1日,^criteriaval\n诊断^widget,预约
日期,^criteriafields,GE,^criteriaexp,2015年1月1日,^criteriaval\n错误:
分类^wdgt,^错误的应用日期\n高
风险^widget,1^count,3^dfn,8,患者^patname,
2018年4月9日^reviewdate,ACTIVE^状态,高自杀风险^flag\n高
风险^widget,2^count,379^dfn,SEVENTYNINE,患者^patname,
2018年1月7日^reviewdate,ACTIVE^状态,高自杀风险^flag\n高
风险^widget,3^count,766^dfn,第七名,患者^patname,
2018年12月6日^reviewdate,ACTIVE^状态,高自杀风险^flag\n高
风险^widget,4^count,100848^dfn,AVIVAPATIENT,八^patname,
2018年1月24日^reviewdate,ACTIVE^状态,高自杀风险^flag\n`
函数输出(){
str=str.replace(/\n | \\n/g',)
.替换(/^.+?高/i,“高”)
返回str
}
document.getElementById('output')。textContent=output()

您可以使用
拆分
切片
加入

var str=“上次入院日期、上次评估日期、上次出院日期、上次MH安全计划、下次MH应用日期、跟踪、患者姓名、患者PRF、PRF回顾、^widgetcolumns\nHIGH RISK^widget、17 |精神健康中心、^widgetloc、42 ^ instrID、PHQ9 ^ instrName、S ^ instrScore | \nSUD widget无效、3180601,上次预约,患者姓名,^widgetcolumns\nDiage^widget,17 |心理健康中心,26 |心理卫生-OPC,^widgetloc\nHIGH RISK^widget,预约日期,上次评估日期,MH上次预约日期,^criteriafields,RG,GE,GE,^criteriaexp,01/01/2016-12/31,01/2016,01/01/2010,^criteriaval\nDiage^widget,预约日期,^criteriafields,GE,^criteriaexp,2015年1月1日,^criteriaval\n错误:分类^wdgt,^BAD APPT DATES\n高风险^widget,1^count,3^dfn,8,患者^patname,2018年4月9日^reviewdate,ACTIVE^状态,高自杀风险^flag\n高风险^widget,2^count,379^dfn,SEVENTYNINE,患者^patname,2018年1月7日^reviewdate,ACTIVE^状态,高自杀风险^flag\n高风险^widget,3^count,766^dfn,SEVENTYONE,患者^patname,2018年6月12日^reviewdate,ACTIVE^状态,高自杀风险^flag\n高风险^widget,4^count,100848^dfn,AVIVAPATIENT,八^patname,2018年1月24日^reviewdate,ACTIVE^状态,高自杀风险^flag\n“

console.log(str.split('\n').slice(1).join('\\n'))
您可以使用以下正则表达式:

[\s\S]*?(?=HIGH\s*?RISK\^widget,1\^)
例如:

完整JS:

var String=“上次入院日期、上次评估日期、上次出院日期、上次MH安全计划、下次MH应用日期、追踪、患者姓名、患者PRF、PRF回顾、^widgetcolumns\nHIGH RISK^小部件、17 |精神健康中心、^widgetloc、42 ^ instrID、PHQ9 ^ instrName、S ^ instrScore | \nSUD,3180601\n诊断^widgetTRIAGE小部件^widgettitle5^widgettype\n诊断^WIDGET,上次预约,患者姓名,^widgetcolumns\n诊断^WIDGET,17 |心理健康中心,26 |心理卫生-OPC,^widgetloc,^High RISK^小部件,预约日期,上次评估日期,MH上次申请日期,^criteriafields,RG,GE,GE,^criteriaexp,01/01/2016-12/01,01/2010,^criteriaval\n诊断^widget,预约日期,^criteriafields,GE,^criteriaexp,2015年1月1日,^criteriaval\n错误:分类^wdgt,^BAD应用日期\n高风险^widget,1^count,3^dfn,8,患者^patname,2018年4月9日^reviewdate,ACTIVE^状态,自杀高风险^flag\n高风险^widget,2^count,379^dfn,SEVENTYNINE,患者^patname,2018年1月7日^reviewdate,活动状态,高自杀风险^flag\n高风险^widget,3^count,766^dfn,SEVENTYONE,患者^patname,2018年12月6日^reviewdate,活动状态,高自杀风险^flag\n高风险^widget,4^count,100848^dfn,AVIVAPATIENT,八^patname,2018年1月24日^reviewdate,活动状态,高自杀风险^flag\n“

console.log(String.replace(/[\s\s]*?(?=HIGH\s*?RISK\^widget,1^)/,“”))
Star在换行符处拆分,查看每一行的外观,然后解析这些行。这就是我所做的,这很酷,因为这样做很有效,但是我如何仅使用我需要的信息取出数组?这确实是我一直在努力解决的问题。使用数组#过滤器并在每一行上搜索所需内容。返回true I如果匹配存在,如果不存在则为false
问题是,没有任何内容可以硬编码,因为所有数据根据登录者的不同而不同。
好吧,你甚至没有给出需要硬编码的一般(通用)关键字。请发布所需的输出。嘿,Ibrahim,很抱歉打扰你,我还有一个问题。[“高风险”^widget", "1^
[\s\S]*?(?=HIGH\s*?RISK\^widget,1\^)