現在開発中のアプリで、以前の投稿データを引用してデータを新規登録するという機能があるのですが、その際に、タイトルの後ろに (2) や (3) などの番号を自動で追加してほしいという要望があり、対応しました。
やっている処理自体は大したことはないのですが、今後どこかで使いそうだったので、その時のコピー元としてまとめます。
コードは下記のとおりです。
変数 title
にタイトルのテキストが代入されているという想定です。
const NAME_REGEX = /\((\d+)\)$/; const match = title.match(NAME_REGEX); const newTitle = !match ? `${title}(2)` : `${title.replace(NAME_REGEX, '')}(${Number(match[1])+1})`;
まず、1、2 行目でタイトルの末尾に (2) などの文字列があるかどうかを正規表現で判断しています。
で、もし (2) などの文字列が存在していなかったら、(2) という文字列を追加します。
存在していた場合は、replace()
を使ってそれを削除して、代わりに (3) というように、カッコ内の数字を +1 した番号を追加するようにしています。
新しいタイトルは変数 newTitle
に代入されます。
処理としては以上です。
正規表現を変更すれば [2] にしたりもできるので、そこはお好みの書き方に変更してください。
個人的には、3行目の「もし(2)が存在していたら削除して、(3) を追加し直す」という書き方がちょっとキレイじゃないかな…とも思っているのですが、残念ながらもっといいか書き方が思い浮かばなかったのでこのように記述しました。
もし、改善案が思いついたら、書き直したいと思います!
以上、JavaScript でタイトルの末尾に (2) や (3) などの番号を自動で追加する方法についてでした。
ご参考になれば幸いです。