2017-11-03 10 views
1

私は、数学的計算からなる文字列を配列に分割しようとしています。各配列要素は、数値または算術演算子を表す必要があります。私は、文字列を分割して、もう一度番号を結合していることを行う試してみました。私が欲しいもの数学的計算からなる文字列を配列に分割する方法は?

var str = "12.5+89.7-568.2/258.6"; 
var arr = str.splite(""); 
alert(arr); // [ 1, 2, ., 5, +, 8, 9 ] 

は、このような新しい配列です:

alert(arr1); // [ 12.5, +, 89.7, -, ... ] 

私はこれを達成するために正規表現を使用しようとしています:

var re = /[0-9.]/; 
var y = []; 
var i = 0; 
while (i < arr.length) { 
    var x = ""; 
    do { 
     x += arr[i]; 
     i++; 
    } while (arr[i].match(re)); 
    y.push(x); 
} 
alert(y); 

私はウェブ上のプレマイドソリューションを使用せずにこれを実行しようとしています。

+0

どのようなものですが、 'のために良いarr':それはない場合は、それがある場合、current変数とtokenを押して、current変数に追加しますか?そして、「スプライト」とは何ですか? – melpomene

+0

あなたが得ている望ましくない結果は何ですか? –

+0

'splite'は' split'です。 'asdf" .split( "")== ["a"、 "s"、 "d"、 "f"] ' –

答えて

1

正規表現のソリューション:

splitと正規表現を使用して
var str = "12.5+89.7-568.2/258.6" 
var items = str.match(/[^\d()]+|[\d.]+/g); 
console.log(items); 
//["12.5", "+", "89.7", "-", "568.2", "/", "258.6"] 

str.split(/([^0-9.])/) 

splitとトークンのリストを使用して:

ちょうどあなたが気にあなたのtokensのリストを作成し、その後、各項目を繰り返して、その項目の1つであるかどうかを確認します。

var str = "12.5+89.7-568.2/258.6" 
var tokens = ["+","-","*","/"]; 
var words = str.split(""); 
var pieces = []; 
var current = ''; 
for (var i = 0; i < words.length; i++) { 
    if (tokens.indexOf(words[i]) === -1) { 
     current += '' + words[i] + ''; 
    } else { 
     current && pieces.push(current); 
     pieces.push(words[i]); 
     current = ''; 
    } 
} 
current && pieces.push(current); 
console.log(pieces); 
//["12.5", "+", "89.7", "-", "568.2", "/", "258.6"] 
+0

UVは両方のソリューションによく見えます。 –

関連する問題