首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >拆分超长的javascript字符串

拆分超长的javascript字符串
EN

Stack Overflow用户
提问于 2018-07-25 02:07:33
回答 3查看 114关注 0票数 0

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

代码语言:javascript
复制
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

我为这条超长的线提前道歉,但我需要

代码语言:javascript
复制
"HIGH RISK^widget,1^count,3^dfn,EIGHT,PATIENT^patname,"

从那个字符串到底部。所以除了引号之外的所有东西都被丢弃了。

有没有办法不把我的头撞到墙上?问题是没有什么是硬编码的,因为所有的数据都是根据登录的人而不同的。

更新:适用于那些询问所需输出的人。我想把它作为一个大字符串,而不是其他任何东西。

代码语言:javascript
复制
"HIGH RISK^widget,1^count,3^dfn,EIGHT,PATIENT^patname,
09/04/2018^reviewdate,ACTIVE^status,HIGH RISK FOR SUICIDE^flag\n
HIGH RISK^widget,2^count,379^dfn,SEVENTYNINE,PATIENT^patname,
07/01/2018^reviewdate,ACTIVE^status,HIGH RISK FOR SUICIDE^flag\n
HIGH RISK^widget,3^count,766^dfn,SEVENTYONE,PATIENT^patname,
06/12/2018^reviewdate,ACTIVE^status,HIGH RISK FOR SUICIDE^flag\n
HIGH RISK^widget,4^count,100848^dfn,AVIVAPATIENT,EIGHT^patname,
01/24/2018^reviewdate,ACTIVE^status,HIGH RISK FOR SUICIDE^flag\n"

提前感谢您的帮助!

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2018-07-25 07:57:18

您可以使用这个正则表达式:

代码语言:javascript
复制
[\s\S]*?(?=HIGH\s*?RISK\^widget,1\^)

示例:https://regex101.com/r/HNvvpc/1/

完整的JS:

代码语言:javascript
复制
var String = "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"
console.log(String.replace(/[\s\S]*?(?=HIGH\s*?RISK\^widget,1\^)/, ''));

要删除^和数组中的所有内容,可以使用这个简单的带循环的正则表达式\^.*。示例:

代码语言:javascript
复制
var Arr = ["HIGH RISK^widget", "1^count", "3^dfn", "EIGHT", "PATIENT^patname", "09/04/2018^reviewdate", "ACTIVE^status", "HIGH RISK FOR SUICIDE^flag"];

for (i = 0; i < Arr.length; i++) { 
    console.log(Arr[i].replace(/\^.*/, ''));   
}

票数 1
EN

Stack Overflow用户

发布于 2018-07-25 02:31:06

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

代码语言:javascript
复制
var str = `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`


function output(){
  str = str.replace(/\n|\\n/g, ' ')
    .replace(/^.+?high/i, 'HIGH')
  
  return str
}

document.getElementById('output').textContent = output()
代码语言:javascript
复制
<div id="output"></div>

票数 0
EN

Stack Overflow用户

发布于 2018-07-25 06:36:46

您可以使用splitslicejoin

代码语言:javascript
复制
var str = "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"

console.log(str.split('\n').slice(1).join('\\n'))

如果你需要用换行符连接你的srting,使用.join('\n')

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/51505040

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档