2016-09-28 9 views
0

Ich habe die folgende ZeichenfolgeJavascript - String geteilt

str = "11122+3434" 

ich es in geteilt werden soll [ "11122", "+", "3434"]. Es können folgende Trennzeichen sein +, -, /, *

Ich habe versucht, die folgende

strArr = str.split(/[+,-,*,/]/g) 

Aber ich bekomme

strArr = [11122, 3434] 
+0

es können verschiedene Trennzeichen sein oder kann es einer nach dem anderen sein –

+0

Sie nur mathematische Ausdrücke oder irgendetwas anderes teilen möchten? – Pankaj

+0

jeweils nur ein Delimiter. Ich möchte nur mathematische Ausdrücke teilen – Neeraj

Antwort

4

Trennzeichen sind die Dinge, die Daten trennen. So ist die .split() Methode entworfen, um Trennzeichen zu entfernen, da Trennzeichen keine Daten sind, so dass sie überhaupt nicht wichtig sind.

In Ihrem Fall ist die Sache zwischen zwei Werten auch Daten. Es ist also kein Trennzeichen, es ist ein Operator (so heißt es in der Mathematik).

Dazu möchten Sie die Daten analysieren, anstatt die Daten zu teilen. Das Beste, was denn das ist deshalb regexp:

var result = str.match(/(\d+)([+,-,*,/])(\d+)/); 

gibt einen Array:

["11122+3434", "11122", "+", "3434"] 

So Ihre Werte result[1] wären, result[2] und result[3].

1

Hmm, ist eine Möglichkeit, ein Leerzeichen als Trennzeichen zuerst hinzuzufügen.

// yes,it will be better to use regex for this too 
str = str.replace("+", " + "); 

geteilt em Dann

strArr = str.split(" "); 

und es wird Ihr Array

["11122", "+", "3434"] 
1

in Klammer zurückkehren + - * entkommen muss, so

strArr = str.split(/[\+\-\*/]/g) 
+0

Dies wird Ihnen nicht die Symbole geben. –

2

Dies sollte helfen. ..

str = '11122+3434+12323*56767' 
 
strArr = str.replace(/[+,-,*,/]/g, ' $& ').split(/ /g) 
 
console.log(strArr)

0

var str = "11122+77-3434"; 
 

 
function getExpression(str) { 
 
    var temp = str.split(''); 
 
    var part = ''; 
 
    var result = [] 
 
    for (var i = 0; i < temp.length; i++) { 
 
    if (temp[i].match(/\d/) && part.match(/\d/g)) { 
 
     part += temp[i]; 
 
    } else { 
 
     result.push(part); 
 
     part = temp[i] 
 
    } 
 
    if (i === temp.length - 1) { //last item 
 
     result.push(part); 
 
     part = ''; 
 
    } 
 
    } 
 
    return result; 
 
} 
 
console.log(getExpression(str))

Verwandte Themen