2017-08-08 1 views
-1

Ich habe eine zweiteilige Zeichenfolge und Teile immer durch Leerzeichen und | begrenzt. Wie folgt aus:JS Regex Leerzeichen zur Zeichenfolge hinzufügen

teststring | secondstring 

Es ist möglich, vordefinierte Anzahl des Raumes zwischen den Teilen fügen mit NUR Javascript regex.replace()?

habe ich versucht, so etwas wie diese:

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

und Substitution:

$1$2$3 

Es ist möglich, Capture-Gruppe in Substitution zu wiederholen, z.B. $2{17} oder gleichen Platz mehrmals zusammen?

EDIT: Ich habe Funktion

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

und ich möchte Text zweiteiligen passieren, Muster enthält Anzahl von Leerzeichen oder replaceExpr mit de Anzahl von Räumen und Ergebnis: firstpart | secondpart

+3

* ONLY Javascript Regex.Replace()? * Warum? Split ist hier wohl eleganter ... –

+0

Könnten Sie sagen, was ist die erwartete Ausgabe auch? –

+0

Erwartete Ausgabe: Testzeichenfolge | Sekundenstring –

Antwort

0

Eine nicht regex Antwort:

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

Oder mit regex sein vermutlich:

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

Niemals '.repeat()' vorher gesehen. Das ist großartig :) –

+1

Wo heißt es 9 Plätze? – lumio

+0

"... zum Hinzufügen einer vordefinierten Anzahl von Leerzeichen zwischen Teilen" –

0

Sie padStart und padEnd nutzen könnten. Weil du gesagt hast, dass sie eine bestimmte Länge haben sollen.

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

Ich kann nicht mit Eingabe im Code manipulieren, nur Strings –

+0

In Ordnung. Ich habe meine Antwort aktualisiert – lumio

Verwandte Themen