2017-02-06 8 views
4

文字と整数の両方で変数を作成するJavaScriptコードがいくつかあります。文字列に複数の連続する整数を追加する

この文字列の中に連続した整数を追加する必要がありますが、他の個々のまたはそれに続く連続する整数には影響しません。

は私の入力が

GhT111r1y11rt 

であると言うことができます私はあることを私の出力を必要とするだろう:

GhT3r1y2rt 

は、どのように私はこれを行うに行きますか?

答えて

7

コールバックを使用してString#replaceメソッドを使用すると、String#splitおよびArray#reduceメソッドを使用して合計を計算します。私たちは一桁を交換したくないので、\d+より優れている桁の

console.log(
 
    'GhT111r1y11rt'.replace(/\d{2,}/g, function(m) { // get all digit combination, contains more than one digit 
 
    return m.split('').reduce(function(sum, v) { // split into individual digit 
 
     return sum + Number(v) // parse and add to sum 
 
    }, 0) // set initial value as 0 (sum) 
 
    }) 
 
)

\d{2,}マッチ2以上の繰り返し。文字が数値であるとき

+0

はクールに見えるが、何GhT121r1y12rt' 'についての最初の数字
\1+繰り返しをキャプチャ? – webdeb

+0

@webdeb:それは合計を返します(質問:___ "この文字列の中に連続した整数を入れて一緒に追加する" ___) –

0

方法のisNaN()は、個別に

0

を各文字をチェックするためにSUBSTRを使用しますが、同じ数字のために、このようにそれを行うことができ、trueを返しますが(あなたの例の文字列のように)複数回繰り返す:

'GhT111r1y11rt'.replace(/(\d)\1+/g, function (m,g1) { return g1 * m.length;}); 

(\d)(グループ1から)捕獲桁

関連する問題