JavaScriptで文字列の先頭1文字を削除する方法

JavaScriptで文字列の先頭1文字を削除する方法JS
この記事は約12分で読めます。

※本記事のコンテンツは、利用目的を問わずご活用いただけます。実務経験10000時間以上のエンジニアが監修しており、基礎知識があれば初心者にも理解していただけるように、常に解説内容のわかりやすさや記事の品質に注力しております。不具合・分かりにくい説明や不適切な表現、動かないコードなど気になることがございましたら、記事の品質向上の為にお問い合わせフォームにてご共有いただけますと幸いです。(理解できない部分などの個別相談も無償で承っております)
(送信された情報は、プライバシーポリシーのもと、厳正に取扱い、処分させていただきます。)

●JavaScriptで文字列の1文字目を削除するとは

JavaScriptで文字列操作を行う際に、文字列の先頭にある1文字を取り除きたいというシーンは意外と多いものです。

例えば、ユーザーの入力値の先頭に不要な空白やその他の文字が含まれていた場合、これを削除してデータを正規化する必要があります。

そこで今回は、JavaScriptにおける文字列の1文字目を削除するための様々な方法について、詳しく解説していきたいと思います。

初心者の方にもわかりやすいよう、サンプルコードを交えながら、丁寧に説明していきますので、ぜひ最後までお付き合いください。

○slice()を使った1文字目削除

slice()メソッドは、文字列の一部分を抽出するために使用されます。

このメソッドを応用することで、文字列の1文字目を簡単に削除することができます。

○サンプルコード1:slice()の基本的な使い方

const str = "Hello, World!";
const newStr = str.slice(1);
console.log(newStr); // 出力結果: "ello, World!"

このサンプルコードでは、slice(1)と指定することで、インデックス1番目(つまり2文字目)以降の文字列を抽出しています。

結果として、先頭の”H”が削除された”ello, World!”が出力されます。

slice()メソッドは、指定したインデックスから末尾までの文字列を取り出すシンプルな方法です。

ただし、開始位置に負の値を指定した場合は、文字列の末尾からのオフセットとして扱われるので注意が必要ですね。

○substring()による1文字目削除

一方、substring()メソッドを使っても、同様に文字列の1文字目を削除することが可能です。

○サンプルコード2:substring()で先頭文字を除去

const str = "Hello, World!";
const newStr = str.substring(1);
console.log(newStr); // 出力結果: "ello, World!"

substring()メソッドは、slice()と同じく、指定したインデックスから末尾までの部分文字列を返します。

このサンプルコードの場合、インデックス1番目以降の文字列が抽出され、先頭の”H”が削除されて”ello, World!”が出力されます。

ただし、substring()とslice()には、負の値の扱いに違いがあるので、使い分けには注意が必要です。

substring()は負の値を0として扱うのに対し、slice()は末尾からのオフセットとして扱います。

●正規表現を使った1文字目削除

slice()やsubstring()を使った方法は簡単でしたが、正規表現を使えば、もっと柔軟に1文字目を削除することができます。

正規表現を使うと、特定のパターンにマッチする文字を検索して、置換や削除を行うことが可能です。

正規表現を使った文字列操作は、一見難しそうに感じるかもしれません。

でも、基本的なパターンさえ覚えてしまえば、かなり強力なテクニックとして活用できるんです。

それでは、正規表現を使って、文字列の1文字目を削除する方法を見ていきましょう。

○サンプルコード3:正規表現で1文字目を置換

const str = "Hello, World!";
const newStr = str.replace(/^./, "");
console.log(newStr); // 出力結果: "ello, World!"

ここでは、replace()メソッドの第一引数に正規表現/^./を指定しています。^は文字列の先頭を表し、.は任意の1文字にマッチします。

したがって、/^./は「文字列の先頭にある任意の1文字」を意味するパターンですね。

第二引数の””は、マッチした文字を空文字列に置換することを表しています。

つまり、先頭の1文字を削除する操作になります。

実行結果を見ると、先頭の”H”が取り除かれ、”ello, World!”が出力されていることがわかります。

○サンプルコード4:正規表現で1文字目を削除

const str = "Hello, World!";
const newStr = str.replace(/^./, "");
console.log(newStr); // 出力結果: "ello, World!"

サンプルコード3と同じように、replace()メソッドと正規表現/^./を使って、先頭の1文字を空文字列に置換しています。

これにより、事実上の削除操作が行われます。

○サンプルコード5:正規表現で任意の1文字を削除

const str = "Hello, World!";
const newStr = str.replace(/o/, "");
console.log(newStr); // 出力結果: "Hell, World!"

これは、文字列の先頭ではなく、任意の1文字を削除する例です。

正規表現のパターンを/o/とすることで、最初に出現する”o”を空文字列に置換しています。

実行結果を確認すると、”Hello, World!”の2番目の”o”が削除され、”Hell, World!”になっていますね。

●その他の1文字目削除テクニック

ここまで、slice()、substring()、正規表現を使った1文字目の削除方法を見てきましたが、他にもいくつかのテクニックがあります。

文字列操作を行う際、状況に応じて適切な方法を選ぶことが大切ですね。

それぞれのメソッドには特徴があるので、コードの可読性や保守性を考慮しながら、ベストな選択をしていきましょう。

では、その他の1文字目削除テクニックについて、詳しく解説していきます。

○charAt()とsubstr()の組み合わせ

charAt()メソッドは、指定したインデックスの文字を返します。

substr()メソッドは、指定した位置から指定した長さの部分文字列を返します。

この2つを組み合わせることで、1文字目を削除することができるんです。

○サンプルコード6:charAt()とsubstr()の応用

const str = "Hello, World!";
const newStr = str.substr(str.charAt(0) === "H" ? 1 : 0);
console.log(newStr); // 出力結果: "ello, World!"

このサンプルコードでは、charAt(0)で文字列の最初の文字を取得し、それが”H”かどうかを条件式で判定しています。

もし最初の文字が”H”なら、substr(1)で2文字目以降の部分文字列を返します。そうでない場合は、substr(0)で文字列全体を返します。

実行結果を見ると、”Hello, World!”の先頭の”H”が削除され、”ello, World!”が出力されていますね。

○split()とjoin()を利用する方法

split()メソッドは、文字列を指定した区切り文字で分割し、配列として返します。

join()メソッドは、配列の要素を指定した区切り文字で結合し、文字列として返します。

この2つを組み合わせると、1文字目を削除できます。

○サンプルコード7:split()とjoin()で1文字目削除

const str = "Hello, World!";
const newStr = str.split("").slice(1).join("");
console.log(newStr); // 出力結果: "ello, World!"

まず、split(“”)で文字列を1文字ずつ分割し、配列に変換します。

次に、slice(1)で2番目以降の要素を取り出し、最後にjoin(“”)で要素を結合して文字列に戻します。

実行結果は、先頭の”H”が取り除かれた”ello, World!”になります。

split()とjoin()を使う方法は、一時的に配列に変換するため、少しわかりにくいかもしれません。

でも、柔軟性が高く、応用範囲が広いので、覚えておくと便利ですよ。

●1文字目削除の応用例

ここまで、JavaScriptで文字列の1文字目を削除するための様々な方法を解説してきました。

slice()、substring()、正規表現、charAt()とsubstr()の組み合わせ、split()とjoin()など、それぞれのテクニックには特徴があり、状況に応じて使い分けることが大切ですね。

でも、実際の開発現場では、もっと複雑な要件に直面することがあります。

例えば、特定の条件を満たす場合にだけ1文字目を削除したり、複数の文字列を一括処理したりする必要があるかもしれません。

そんな時こそ、これまで学んだ知識を応用していくことが求められるんです。

サンプルコードを見ながら、具体的なユースケースを想定して、実践的なスキルを身につけていきましょう。

○サンプルコード8:文字列の先頭にある特定の文字を削除

const str = "Hello, World!";
const newStr = str.replace(/^H/, "");
console.log(newStr); // 出力結果: "ello, World!"

このサンプルコードでは、正規表現を使って、文字列の先頭にある特定の文字”H”を削除しています。

/^H/は、”H”で始まる文字列にマッチするパターンです。

実行結果を見ると、”Hello, World!”の先頭の”H”だけが取り除かれ、”ello, World!”になっていますね。

○サンプルコード9:複数の文字列から1文字目を一括削除

const arr = ["apple", "banana", "cherry"];
const newArr = arr.map(str => str.slice(1));
console.log(newArr); // 出力結果: ["pple", "anana", "herry"]

このサンプルコードでは、map()メソッドを使って、配列内の複数の文字列から1文字目を一括で削除しています。

map()は、配列の各要素に対して指定したコールバック関数を実行し、新しい配列を返します。

コールバック関数内でslice(1)を使い、各文字列の2文字目以降を抽出しています。

その結果、”apple”、”banana”、”cherry”から、それぞれ先頭の1文字が取り除かれた”pple”、”anana”、”herry”が新しい配列として出力されます。

○サンプルコード10:1文字目削除した結果を別の変数に代入

const str = "Hello, World!";
const firstChar = str.charAt(0);
const newStr = str.slice(1);
console.log(firstChar); // 出力結果: "H"
console.log(newStr); // 出力結果: "ello, World!"

このサンプルコードでは、1文字目を削除した結果を、元の文字列とは別の変数に代入しています。

charAt(0)で先頭の1文字を取得し、slice(1)で2文字目以降の部分文字列を取得しています。

これにより、先頭の1文字”H”は変数firstCharに、残りの文字列”ello, World!”は変数newStrに格納されます。

それぞれの変数を個別に扱うことができるので、状況に応じて柔軟な処理が可能になります。

●よくある質問とエラー対処法

JavaScriptで文字列の1文字目を削除する際に、初心者の方がよく遭遇する問題やエラーがあります。

実際の開発現場でも、思わぬ挙動に頭を悩ませることがありますよね。

ただ、エラーメッセージをしっかり読み、原因を特定していけば、必ず解決への糸口が見つかります。

ここでは、よくある質問とエラー対処法を通して、文字列操作のさらなるコツを学んでいきましょう。

○「文字列ではなく配列が返ってくる」エラーへの対処

文字列の1文字目を削除しようとしているのに、なぜか配列が返ってきてしまうことがあります。

const str = "Hello, World!";
const newStr = str.split("").slice(1);
console.log(newStr); // 出力結果: ["e", "l", "l", "o", ",", " ", "W", "o", "r", "l", "d", "!"]

このサンプルコードでは、split(“”)で文字列を1文字ずつに分割した後、slice(1)で2文字目以降を取得しています。

ただし、split(“”)の時点で文字列が配列に変換されてしまうため、slice(1)の結果も配列になってしまうんです。

この問題を解決するには、最後にjoin(“”)で配列を文字列に戻す必要があります。

const str = "Hello, World!";
const newStr = str.split("").slice(1).join("");
console.log(newStr); // 出力結果: "ello, World!"

これで、意図通りの文字列が得られますね。

split()とslice()を使う際は、最後にjoin()を忘れずに!

○削除する文字数を誤って指定してしまう問題

slice()やsubstring()で削除する文字数を誤って指定してしまうと、思わぬ結果になることがあります。

const str = "Hello, World!";
const newStr = str.slice(2); // 3文字目以降を取得
console.log(newStr); // 出力結果: "llo, World!"

このサンプルコードでは、slice(2)としているため、3文字目以降が取得されています。1

文字目を削除したつもりが、実際には2文字削除されてしまったんです。

インデックスの指定には十分注意しましょう。

1文字目を削除するには、slice(1)やsubstring(1)が正しい指定方法です。

○空文字列に対して1文字目削除を適用するとどうなる?

空文字列に対して1文字目の削除を行った場合、どのような結果になるでしょうか?

const str = "";
const newStr = str.slice(1);
console.log(newStr); // 出力結果: ""

このサンプルコードでは、空文字列に対してslice(1)を適用しています。

結果は、やはり空文字列になります。

空文字列には削除すべき文字がないため、1文字目の削除を行っても変化はありません。

これは、他のメソッドでも同様です。

エラーが発生しないため、特別な対処は必要ありませんが、空文字列に対する操作は注意深く行うようにしましょう。

まとめ

JavaScriptで文字列の1文字目を削除する方法について、詳しく解説してきました。

このメソッドを使い分けることで、状況に応じた最適な文字列操作が可能になります。

ここで学んだ知識を活かして、より効率的で堅牢なコードを書いていきましょう。

実務で活躍できるエンジニアを目指して、日々の開発に取り組んでいきましょう。