2011-12-07 30 views
3

私は25a89ss15s9 8 63のような文字列をユーザが入力できるようにページを設定しようとしており、ユーザに "25、89、15、9、ユーザーに「8,9,15,25,63,89」と警告します。だから私は指定された文字列から整数を分離しようとしているし、それらを並べ替える。 どのように私はそれらを配列または何かに分けるだろうか?私は、同様の質問からいくつかの例を試しましたが、1つの整数でしか動作しないようです。JavaScriptの文字列から複数の整数を抽出する

ありがとうございます、ありがとうございます。

+0

は正規表現 – Trevor

+0

のための仕事のような音はあまり君たちをありがとう!私は本当にそれを感謝し、あなたは縛りから私を助けた! –

答えて

7
var string = "25a89ss15s9 8 63"; // Input 
var list = string.match(/\d+/g); // Get a list of all integers 
list.sort(function(x,y){   // Sort list 
    return x - y; 
}); 
// At this point, you have a sorted list of all integers in a string. 

このコードは、(すべての連続桁=整数、/g手段:すべてのオカレンスを選択\d+手段)RegExを使用しています。 String.match()メソッドは、一致したすべてのフレーズ(この場合は整数)の配列を返します。

最後に、Array.sortメソッドが呼び出され、関数を引数として渡して配列をソートします。

+0

注: 'list'は実際の整数ではなく数字列の配列になります - OPが何を望んでいるのかは明確ではありませんが、あなたの投稿には何かについて少し混乱している'実際の結果は次のとおりです。 – jfriend00

+0

ありがとうございました!それは有り難いです! –

+0

コンマで区切られた文字列を探しているならば、 'Array.prototype'から 'join'を使います。 'list.join( '、');' – Trevor

2

あなたはすべての数字出て解析するために正規表現を使用することができます。

/\d+/g 

(一つ以上の数字を、そしてgは「すべての出現箇所を」意味)

次に、あなたがそれらを並べ替えますが、確認することができますあなたは(デフォルト)ソート辞書式を避けるために、カスタム関数を使用している:

var numbers = "25a89ss15s9 8 63".match(/\d+/g).sort(function(a, b) {return a - b}); 

あなたはこのように警告することができます。

alert("The numbers are: " + numbers.join(", ")); 
2

これを試してみてください:

var s = "25a89ss15s9 8 63"; 
var xs = s.match(/\d+/g); // => ["25", "89", "15", "9", "8", "63"] 
xs.sort(function(x,y) { return x - y; }); 
xs.join(", "); // => "8, 9, 15, 25, 63, 89" 
2

は数字の実際の配列で終わるために、私はこれを行うだろう:

var str = "25a89ss15s9 8 63", 
    arr = str.match(/\d+/g) 
      .map(Number) 
      .sort(function(a,b){ return a-b; }); 

あなたが.map()available from MDNの互換性パッチが必要になります。

これは、小数点がないことを前提としています。ここで

+1

+1 ES5に準拠した環境のための素晴らしい追加です。 –

1

は、線形探索バージョンです:

var isNumber = false; 

var number = ""; 
var string = "25a89ss15s9 8 63"; 

var numbers = []; 

for (var i = 0; i <= string.length; ++i) { 
    var c = string.charAt(i); 
    if (c > '/' && c < ':') { 
     number += c; 
     isNumber = true; 
    } else { 
     isNumber = false; 
    } 

    if (!isNumber) { 
     if (number != "") { 
      numbers.push(number); 
     } 
     number = ""; 
    } 
} 

// Non sorted array 
alert(numbers); 

// Sorted Array 
alert(numbers.sort(function(x, y) { 
    return x - y; 
})); 
関連する問題