繁体   English   中英

我需要将重复单词上的长字符串拆分为数组

[英]I need to split a long string on a repeating word into an array

尝试使用Javascript,我有一个很长的字符串,我需要使用在字符串中重复的单词将其拆分为数组。

例:

long_string = "THS& | Willam | Baker | 1234 Corker St| Jacksonville, TX 75074| THS& Steve | James | 4312 Corker St | Jacksonville, TX 75074| THS& | Samuel | Cade | 1257 Corker St | Jacksonville, TX 75074|"

我尝试过拆分和匹配,但始终忽略了THS&

split_string = [];
split_string = long_string.split(/THS&/);
console.log(split_string);


放入数组:

[THS& | Willam | Baker | 1234 Corker St| Jacksonville, TX 75074|, THS& Steve | James | 4312 Corker St | Jacksonville, TX 75074|, THS& | Samuel | Cade | 1257 Corker St | Jacksonville, TX 75074|]

但是我得到的是这样的

[| Willam | Baker | 1234 Corker St| Jacksonville, TX 75074|, Steve | James | 4312 Corker St | Jacksonville, TX 75074|, | Samuel | Cade | 1257 Corker St | Jacksonville, TX 75074|]

无论您在split匹配的内容(例如THS& )都不会包含在结果中。 解决方案是使用look-ahead ,它实际上不会捕获字符串:

 var long_string = "THS& | Willam | Baker | 1234 Corker St| Jacksonville, TX 75074| THS& Steve | James | 4312 Corker St | Jacksonville, TX 75074| THS& | Samuel | Cade | 1257 Corker St | Jacksonville, TX 75074|" var split_string = long_string.split(/(?=THS&)/); console.log(split_string); 

split()方法在结果子字符串中不包含分隔符。 如果分隔符总是相同,请考虑在每个子字符串的开头将其串联。 (您可以遍历split_string并在数组的每个字符串的开头添加连接"THS& "

分隔符将不会包含在结果中,因此您必须将其重新添加。而且,第一项将为空,因此请使用Array.prototype.shift()从结果数组中剥离它。 例如:

 var long_string = "THS& | Willam | Baker | 1234 Corker St| Jacksonville, TX 75074| THS& Steve | James | 4312 Corker St | Jacksonville, TX 75074| THS& | Samuel | Cade | 1257 Corker St | Jacksonville, TX 75074|"; var split_string = long_string.split("THS&").map(function(item) { return "THS&"+item; }); split_string.shift(); console.log(split_string); /* [ "THS& | Willam | Baker | 1234 Corker St| Jacksonville, TX 75074| ", "THS& Steve | James | 4312 Corker St | Jacksonville, TX 75074| ", "THS& | Samuel | Cade | 1257 Corker St | Jacksonville, TX 75074|" ] */ 

尝试这个

long_string.match(/\S.+?(?=( THS&)|$)/g)

THS之前的空间用于修剪最后一个空间

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM