文字と整数の両方で変数を作成するJavaScriptコードがいくつかあります。文字列に複数の連続する整数を追加する
この文字列の中に連続した整数を追加する必要がありますが、他の個々のまたはそれに続く連続する整数には影響しません。
は私の入力が
GhT111r1y11rt
であると言うことができます私はあることを私の出力を必要とするだろう:
GhT3r1y2rt
は、どのように私はこれを行うに行きますか?
文字と整数の両方で変数を作成するJavaScriptコードがいくつかあります。文字列に複数の連続する整数を追加する
この文字列の中に連続した整数を追加する必要がありますが、他の個々のまたはそれに続く連続する整数には影響しません。
は私の入力が
GhT111r1y11rt
であると言うことができます私はあることを私の出力を必要とするだろう:
GhT3r1y2rt
は、どのように私はこれを行うに行きますか?
コールバックを使用して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以上の繰り返し。文字が数値であるとき
方法のisNaN()は、個別に
を各文字をチェックするためにSUBSTRを使用しますが、同じ数字のために、このようにそれを行うことができ、trueを返しますが(あなたの例の文字列のように)複数回繰り返す:
'GhT111r1y11rt'.replace(/(\d)\1+/g, function (m,g1) { return g1 * m.length;});
(\d)
(グループ1から)捕獲桁
はクールに見えるが、何GhT121r1y12rt' 'についての最初の数字
\1+
繰り返しをキャプチャ? – webdeb@webdeb:それは合計を返します(質問:___ "この文字列の中に連続した整数を入れて一緒に追加する" ___) –