[解決済み] 文字数を増やす方法とは?
2022-08-10 03:22:22
質問
Javascriptのライブラリ(underscore、jQuery、MooToolsなど)で、文字をインクリメントする方法をご存知の方はいらっしゃいませんか?
のようなことが出来たらと思います。
"a"++; // would return "b"
どのように解決するのですか?
シンプルで直接的な解決方法
function nextChar(c) {
return String.fromCharCode(c.charCodeAt(0) + 1);
}
nextChar('a');
他の人が指摘しているように、欠点は文字 'z' のようなケースを期待通りに扱えないかもしれないことです。しかし、それはあなたが何を求めているかによるのです。上記のソリューションは 'z' の後の文字に対して '{' を返しますが、これは ASCII の 'z' の後の文字なので、ユースケースが何であるかに応じて、求めている結果になる可能性があります。
一意な文字列ジェネレータ
(2019/05/09更新)
この回答は非常に多くの注目を集めたので、Googleからこれにつまずいた人の助けになる可能性があるため、元の質問の範囲を超えて少し拡大することにしました。
私は、しばしば、特定の文字セット (たとえば、文字だけを使用する) で連続した一意の文字列を生成するものが必要であることに気づきましたので、この回答を更新して、それを行うクラスをここに含めました。
class StringIdGenerator {
constructor(chars = 'abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ') {
this._chars = chars;
this._nextId = [0];
}
next() {
const r = [];
for (const char of this._nextId) {
r.unshift(this._chars[char]);
}
this._increment();
return r.join('');
}
_increment() {
for (let i = 0; i < this._nextId.length; i++) {
const val = ++this._nextId[i];
if (val >= this._chars.length) {
this._nextId[i] = 0;
} else {
return;
}
}
this._nextId.push(0);
}
*[Symbol.iterator]() {
while (true) {
yield this.next();
}
}
}
使用方法
const ids = new StringIdGenerator();
ids.next(); // 'a'
ids.next(); // 'b'
ids.next(); // 'c'
// ...
ids.next(); // 'z'
ids.next(); // 'A'
ids.next(); // 'B'
// ...
ids.next(); // 'Z'
ids.next(); // 'aa'
ids.next(); // 'ab'
ids.next(); // 'ac'
関連
-
[解決済み] 正規表現で変数を使うには?
-
[解決済み] 2つのJavaScriptオブジェクトのプロパティを動的にマージするにはどうすればよいですか?
-
[解決済み] JavaScriptで配列の先頭に新しい配列要素を追加するにはどうすればよいですか?
-
[解決済み] jQueryでJavaScriptオブジェクトから選択する際に、オプションを追加する最も良い方法は何ですか?
-
[解決済み] 新しい配列を作成せずに、既存のJavaScript配列を別の配列で拡張する方法
-
[解決済み] JavaScriptでURLの#hashを確認する方法は?
-
[解決済み] jQuery/JavaScript:iframeのコンテンツにアクセスする
-
[解決済み] ExtJS 4のイベントハンドリングについて
-
[解決済み] Chart.jsを使ってドーナツチャートの中にテキストを追加するには?
-
[解決済み] JavaScriptの文字列プリミティブとStringオブジェクトの違いは何ですか?
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] AngularJSのエラーです。Cross Origin リクエストはプロトコルスキーム http, data, chrome-extension, https に対してのみサポートされています。
-
[解決済み] JavaScriptで次の要素/前の要素を取得しますか?
-
[解決済み] bootstrap のポップオーバーがすべての要素の上に表示されない
-
[解決済み] WebStormで未解決の変数が大量にある場合の警告に対処する方法は?
-
[解決済み] Reactコンポーネントでthis.setStateを複数回使用するとどうなりますか?
-
[解決済み] Promise : then vs then + catch [重複].
-
[解決済み] JSHintの'+'前の改行不良の説明
-
[解決済み] Javascript の parseInt() で先頭のゼロを削除する。
-
[解決済み] JavaScript で css プロパティを使用して HTML 要素の背景色を設定する方法
-
[解決済み] Chrome拡張機能:popup.htmlを強制終了させる