簡體   English   中英

使用javascript從字符串中提取字符串作為數組

[英]Extract strings as an array from a string using javascript

我有一個弦

make -j128

我需要從該字符串中提取-j128

現在為什么我需要將字符串數組作為輸出,所以我會遇到這樣的情況:

repo sync -j32 && make -j128

在這種情況下,我需要獲取-j32-j128

因此,第一種情況的輸出為[-j128] ,第二種情況的輸出為[-j32,-j128]

我想要的最終結果是沒有-j的數字,它們是[128][32,128] ,我可以通過刪除前面的-j來處理。 如果你們認為為什么我不能在開頭就提取數字。 這是有原因的,因為字符串也可以像這樣

repo blah blah 123 blah -j32 blah 3 blah 

我只需要以-j開頭的32

即使在大量使用Google搜索后,我也無法找到解決方案,這可能是因為不是這樣,所以在感謝regex的幫助下,我們將不勝感激。

這是使用String.prototype.match()的簡單解決方案:

 const s = 'repo sync -j32 && make -j128'; const re = /-j\\d+/g const result1 = s.match(re); const result2 = result1.map(x => +x.replace(/\\D/g, '')); console.log(result1); console.log(result2); 

這里,

  • result1將是一個以-j開頭的所有子字符串的數組,后跟任意數量的數字。
  • result2是相同的數組,其中所有非數字均已刪除,並且值轉換為數字。

您可以使用以下正則表達式來匹配所有帶有-j前綴的數字:

/-j(\d+)/g

然后使用.exec獲取所有匹配的組並將它們放入數組中。

請參見下面的工作示例:

 const str = "repo sync -j32 && make -j128"; let nums = []; let regex = /-j(\\d+)/g; while(match = regex.exec(str)) { nums.push(+match[1]); } console.log(nums); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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