4

次の文字列を指定します。

var myString = "s1a174o10";

次の結果が欲しいです。

var s = 1;
var a = 174;
var o = 10;

文字列の各文字は、次の数字に一致します。

文字列は静的ではないことに注意してください。別の例を次に示します。

var myString = "s1p5a100";
4

3 に答える 3

5

正規表現を使用できます。

var ITEM = /([a-z])(\d+)/g;

次に、各一致をオブジェクトに入れます。

var result = {};
var match;

while(match = ITEM.exec(myString)) {
    result[match[1]] = +match[2];
}

result.sresult.a、およびを使用できるようになりresult.oました。

于 2013-07-11T00:10:25.977 に答える
2

正規表現でこれを行うことができます:

var vars = {};
myString.replace(/(\D+)(\d+)/g, function(_,k,v){ vars[k] = +v });

console.log(vars); //=> {s: 1, a: 174, o: 10} 
于 2013-07-11T00:12:31.447 に答える
0

正規表現はあなたを助けることができます...

var myString = "s1a174o10";
var matches = myString.match(/([a-zA-Z]+)|(\d+)/g) || [];

for(var i = 0; i < matches.length; i+=2){
    window[matches[i]] = matches[i+1];
}

警告: s、a、o はここではグローバルになります。必要に応じて、ここで使用する代わりにオブジェクトを宣言できます window

于 2013-07-11T00:17:07.520 に答える