簡體   English   中英

如何使用替換空格創建正則表達式並在分號之間添加空格

[英]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來選擇替換字符(空格或下划線)。

這將幫助您獲得所需的輸出。

  1. 積極的向后看 (?<=;)
  2. 正向前瞻 (?=;)

我們將其替換為" " 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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM