我有一個包含數字和不同數學運算符的字符串。如何從var str = "123+45-34";
的轉換它解析這個字符串數組將字符串轉換爲數組和元素的數組
var arr = [123, '+', 45, '-',34];
我有一個包含數字和不同數學運算符的字符串。如何從var str = "123+45-34";
的轉換它解析這個字符串數組將字符串轉換爲數組和元素的數組
var arr = [123, '+', 45, '-',34];
一種方法是使用正則表達式的部分儘可能地分割字符串,然後轉換成數字:
var str = "123+45-34";
var matches = str.match(/(\d+|\+|-|\/|\*)/g);
console.log(matches); // ["123", "+", "45", "-", "34"]
var asNumbers = matches.map(function(match) {
return +match || match
})
console.log(asNumbers); // [123, "+", 45, "-", 34]
它看起來像要在word boundaries分割你的字符串:
var str = "123+45-34";
console.log(str.split(/\b/));
談論簡潔:) – myfunkyside
這假定數字是整數(沒有小數點)。嘗試「123 + 4.5-34」 – user2314737
@ user2314737:確實如此。考慮到樣本數據,這似乎並不是問題。 – Cerbrus
你可以使用與運算符對象不同的方法,這對於稍後計算值可能是有用的。
function split(s) {
var a = s.split(''),
i = 1;
while (i < a.length) {
if (!(a[i - 1] in operators || a[i] in operators)) {
a[i - 1] += a.splice(i, 1)[0];
continue;
}
i++;
}
return a.map(function (b) {
return b in operators ? b : +b;
});
}
var operators = { '+': true, '-': true },
str = "123+45-34+1e13";
console.log(split(str));
此代碼嘗試遍歷字符串。每個字符都被附加到一個新字符串un中直到+或 - 被發現,一旦發現它們形成的字符串直到現在將被推入到新陣列中並且特殊字符或者被推入到新陣列中,並且這個過程繼續直到字符串的末尾
例如:123 +
它遍歷字符串。 first first my newString =「1」,then newString =「12」finally newString =「123」 只要找到+,它就會將newString放入newarray.now newArray中,[「123」]和'+'也應該是。推壓,現在陣列變成[ 「123」, 「+」]這個過程繼續
在這裏,我已經考慮到特殊charecters的,因爲只有+和 -
var str="123+45-34";
var newarr=[];
var newStr="";
for(var index=0;index<str.length;index++){
if(str[index]!='+'&& str[index]!='-')
newStr+=str[index];
else{
newarr.push(newStr);
newarr.push(str[index]);
newStr="";
}
}
console.log(newarr);
希望這有助於
@WiktorStribiżew:這個問題是不一樣的。它想要以一組字符分割一個字符串。這裏的標準是不同的。 – Cerbrus
相似的問題:[在JavaScript中評估字符串作爲數學表達式](http://stackoverflow.com/questions/2276021/evaluating-a-string-as-a-mathematical-expression-in-javascript) – user2314737