[英]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.