2017-03-03 4 views
0
var str = "in this sentence, I WANT TO GET ONLY THIS PART - not the other parts" 

Angenommen ich die Rolle bekommen zu schneiden, die mit , beginnt und endet mit -Regex vs Split die Strings in Javascript

Ich benutze split, um immer zu schneiden oder den Teilsatz zu bekommen. Weil ich nicht weiß, wie man eine regex schreibt.

Für dieses Beispiel schrieb ich als;

str.split(",")[1].split("-")[0] 
" I WANT TO GET ONLY THIS PART " 

Ist es effizient zu verwenden split? Oder wie kann ich eine Regex schreiben, die den gleichen Teil übernimmt? Welches soll ich nehmen? regex oder split? Was schlägst du vor und warum?

bearbeiten: Vielen Dank für die genaue Regex, aber ich möchte auch wissen, welcher Weg besser ist? Split ist auch eine Lösung? Oder sollte ich lernen, wie man eine Regex schreibt?

+0

Hallo, Zunächst einmal ein paar qestions beantworten müssen: ** 1) ** Bleibt Ihre Saite gleich? ** 2) ** Sie müssen die Zeichenfolge, die AllCaps ist, immer trennen? –

+0

Eigentlich ist allCaps nur für die Betonung der Saite, die ich schneiden möchte. Es besteht keine Notwendigkeit dafür. Ich möchte zum Beispiel nur eine Zeichenfolge zwischen "," und "-" erhalten. – mmu36478

+1

Sie könnten '.split()' * mit * einem Regex verwenden: 'str.split (/ [, -] /) [1]'. Oder 'str.split (/ (?:, *) | (?: * -) /) [1]', um die führenden und nachgestellten Leerzeichen zu vermeiden. (Ich sage nicht Sie * sollte *, aber Sie * könnten * ...) – nnnnnn

Antwort

3

können Sie verwenden, um die folgenden regex:

,\s?(.*?)\s?- 

JavaScript

var str = "in this sentence, I WANT TO GET ONLY THIS PART - not the other parts"; 
 
var result = str.match(/,\s?(.*?)\s?-/); 
 
console.log(result[1]);

+0

Ergebnis wird ' Ergebnis ' –

+1

@GeomanYabes repariert es :) OP Ergebnis enthält Leerzeichen tho. :) – m87

+0

+1 für den Fix .. noch, wird dies fehlschlagen, wenn das Ergebnis benötigt enthält ',' oder '-' vielleicht ersten Index von', 'dann letzten Index von' -'? : D –