次のような文字列があります。
8=0,2=1,5=1,6=0,7=0
=0
この場合は8、6、7の後に続く番号のみを抽出したい
JavaScriptでこれを行うにはどうすればよいですか?
次のような文字列があります。
8=0,2=1,5=1,6=0,7=0
=0
この場合は8、6、7の後に続く番号のみを抽出したい
JavaScriptでこれを行うにはどうすればよいですか?
試す:
'8=0,2=1,5=1,6=0,7=0'
.match(/\d?=(0{1})/g)
.join(',')
.replace(/=0/g,'')
.split(','); //=> [8,6,7] (strings)
Array
または、高度な反復方法を使用できる場合:
'8=0,2=1,5=1,6=0,7=0'.split(',')
.filter( function(a){ return /=0/.test(a); } )
.map( function(a){ return +(a.split('=')[0]); } ) //=> [8,6,7] (numbers)
var nums = [];
'8=0,2=1,5=1,6=0,7=0'.replace(/(\d+)=0,?/g, function (m, n) {
nums.push(+n);
});
これは、文字列ではなく数値の配列を返すことに注意してください。
別の方法として、より簡潔ですが、より遅い回答を次に示します。
'8=0,2=1,5=1,6=0,7=0'.match(/\d+(?==0)/g);
そして同じ答えですが、文字列の代わりに数字を返します:
'8=0,2=1,5=1,6=0,7=0'.match(/\d+(?==0)/g).map(parseFloat);
これを試して:
function parse(s)
{
var a = s.split(",");
var b = [];
var j = 0;
for(i in a)
{
if(a[i].indexOf("=0")==-1) continue;
b[j++] = parseFloat(a[i].replace("=0",""));
}
return b;
}
それが役に立てば幸い!