2017-08-08 201 views
-1

我有一個由兩部分組成的字符串和部分總是由空格和|分隔的部分。就像這樣:JS正則表達式將字符串添加到字符串

teststring | secondstring 

它可以添加使用只有JavaScript regex.replace()部分之間的空間預定義的計數?

我想是這樣的:

([^\|]+)(\s){0,17}(?(R2)\s|\s)([\|a-zA-Z0-9]+) 

和替代:

$1$2$3 

有可能重複捕獲組以替代例如$2{17}或多次搭配相同的空間?

編輯: 我有功能

function InvokeRegexp(originalString, pattern, replaceExpr) 
{ 
    return originalString.replace(pattern, replaceExpr); 
} 

,我想傳遞兩部分文字,空格或者空格replaceExpr containin號碼包含圖案編號並獲得結果:firstpart |二部

+3

*只有JavaScript regex.replace()*?爲什麼?斯普利特在這裏可能更優雅... –

+0

你能告訴什麼是預期的輸出嗎? –

+0

預期輸出:teststring <計數空間傳遞給正則表達式的值> |秒 –

回答

0

非正則表達式的答案:

str.split("|").join(
    " ".repeat(9 /*whitespaces*/) + "|" 
) 

或用正則表達式的可能:

str.replace(/\|/," ".repeat(9)+"|") 
+0

以前從未見過'.repeat()'。這真棒:) –

+1

它說9個空格在哪裏? – lumio

+0

「...在零件之間添加預定義計數的空格」 –

0

你可以使用padStartpadEnd。因爲你說你想要他們有一定的長度。

const input = 'teststring | secondstring'; 
 

 
// Split the input variable and select spaces as well. 
 
// 1. Select multiple spaces: \s+ 
 
// 2. Select pipe: \| 
 
// 3. Select all following spaces: \s+ 
 
const parts = input.split(/\s+\|\s+/); 
 

 
// So every part should be at least 20 chars in this example. 
 
const len = 20; 
 
const output = `${ parts[ 0 ].padEnd(len) }|${ parts[ 1 ].padStart(len)}`; 
 

 
console.log(output);

+0

我無法用代碼輸入操作,只有字符串 –

+0

好的。我更新了我的答案 – lumio

相關問題