3

ルビーでは、

"a".next [or] "a".succ # => "b"
"aa".next # => "ab"
"z".next # => "aa" # two a's after one z

Javascriptでそれを行う方法は?何かのようなもの:

incr_str("aaa") ===> aab
incr_str("zzz") ===> aaaa
4

3 に答える 3

0

との組み合わせはString.fromCharCode()"".charCodeAt()かなり簡単に実装できるはずです。

var FIRST = 97,
    LAST = 122;

function next (string) {
  var lastChar = string[string.length - 1];

  string = string.substring(0, string.length - 1);

  if(lastChar.charCodeAt(0) >= LAST) {
    // make last char a and append a
    lastChar = String.fromCharCode(FIRST) + String.fromCharCode(FIRST);
  }
  else {
    // Increase last char
    lastChar = String.fromCharCode(lastChar.charCodeAt(0) + 1);
  }

  return string + lastChar;
}

非常に迅速で汚れていて、少し奇妙に動作します (zzz -> zaaa または zzza の代わりに zzaa、どの動作が最適かはわかりません) が、それを実装する方法を示しています (そして atm には時間がありません)より洗練された答えを書いてください)。

于 2013-08-05T06:52:41.193 に答える