[英]How to create regex with replace spaces and add spaces between semicolons
如何創建一個正則表達式,用下划線替換空格並在分號之間添加空格?
將整個文本中的空格替換為下划線可以解決:
data.replace(/ /g, "_");
但是如何解決同時使用分號的情況呢? 關鍵是我有一個文本文件,它用下划線分隔各個文本。 如果它不包含任何數據,它只是在下一個分號中繼續:
data;data;;data;;;data
我需要它在每種情況下的分號之間添加一個空格。 問題是分號的數量不規則,我總是需要添加一個空格:
data;data; ;data; ; ;data
文本文件中有超過 10,000 行這樣的行。 我的情況有解決方案嗎?
const data = "red;;I WW2;123;;;error;more;;blue;;;;123;I love you"; const replaceData = data.replace(/ /g, "_"); /* // //This is not a solution for me, as the number of semicolons is not always the same. And I also can't combine this regex into one. // //const replaceData2 = data.replace(/;;/g, "; ;"); */ console.log(replaceData);
結果應該是這樣的:
red; ;I_WW2;123; ; ;error;more; ;blue; ; ; ;123;I_love_you
謝謝
您可以調用.replace
兩次:
const data = "red;;I WW2;123;;;error;more;;blue;;;;123;I love you"; var repl = data.replace(/ +/g, "_").replace(/;(?=;)/g, "$& "); console.log(repl);
但請確保在;
之間插入空格之前用_
替換空格。 s。
.replace(/ +/g, "_")
: 用_
替換 1+ 個空格.replace(/;(?=;)/g, "$& ")
: 在兩個相鄰分號之間插入空格如果你想用一個正則表達式來做,可以用一個回調參數來做,但這也會花費執行時間。 就像我在評論中寫的那樣,堅持 2 次replace
調用可能會更好。 只需看看它在您的環境和數據上的表現如何。
以下是它如何與回調一起工作:
const data = "red;;I WW2;123;;;error;more;;blue;;;;123;I love you"; const result = data.replace(/ |(?<=;)(?=;)/g, m => " _"[m.length]); console.log(result);
正則表達式在兩個分號之間具有零長度匹配,因此當它匹配時, m
將是空字符串(在回調中)。 因此可以使用m
的大小來區分這兩種情況,然后可以使用length
來選擇替換字符(空格或下划線)。
這將幫助您獲得所需的輸出。
我們將其替換為" "
space
。
const data = "red;;I WW2;123;;;error;more;;blue;;;;123;I love you"; const replaceData = data.replace(/(?<=;)(?=;)/g, " "); console.log(replaceData)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.