Knowledge Diary

JavaScriptで最後の一文字を取得・削除・調べる方法まとめ【slice/substring/endsWith】

Published: Updated:

JavaScriptで最後の一文字を取得・削除・調べる方法まとめ【slice/substring/endsWith】

こんにちは、Webデザイナーの 夢拓(MUHIRO)です。

JavaScriptで文字列を扱っていると、「最後の一文字だけを取得したい」「末尾の文字を削除したい」「特定の文字が最後にあるか調べたい」という場面がよくあります。

たとえば、以下のような処理は、日々のフロントエンド開発やデータ整形作業で頻繁に登場します。

  • 末尾のカンマを削除したい
  • 最後の文字が特定の記号か確認したい
  • 文字列の最後を取り出して条件分岐に使いたい

この記事では、JavaScriptで「最後の一文字」を調べる・取得する・削除する方法について、具体的なコード例とともに丁寧に解説していきます。

この記事はこんな方におすすめ!

  • JavaScriptで文字列の末尾を操作する方法を知りたい
  • slice() や substring() の使い分けに迷っている方
  • WebフォームやURL処理、CSVなどの整形処理をしているエンジニア

この記事を読んで、JavaScriptで「最後の一文字」を調べる・取得する・削除する方法の実践的なテクニックを使用して最適・高度な・柔軟なWebサイトを制作いただけるようになります!

それでは、どうぞ!

Index

CloseOpen

最後の一文字を取得する方法(slice / substring)

文字列から「最後の一文字だけを取得」したい場合、最もよく使われるのが slice() です。

slice(-1)で最後の1文字を取得

JavaScript

const str = "Hello!";
const lastChar = str.slice(-1); // "!"

slice() は負の数を使うことで、後ろから数えた位置を指定できます。-1 を指定すると、末尾1文字を取り出すことができます。
このシンプルさと柔軟性から、JavaScriptでは推奨される方法です。

substring()で最後の1文字を取得する方法

substring() メソッドは、文字列の部分文字列を取得するための標準的な方法です。
しかし、負のインデックスを扱えない点に注意が必要です。

JavaScript:基本構文

str.substring(startIndex, endIndex);
  • startIndex開始位置(0から始まる)
  • endIndex(省略可)終了位置(この位置の文字は含まれない)

JavaScript

const str = "Hello!";
const lastChar = str.substring(str.length - 1); // "!"

このように、文字列の長さから1を引いた位置から取得すれば、末尾の1文字を取り出せます。
ただし、 slice() と比べるとコードが少し冗長で、間違いやすいです。

slice()とsubstring()の違いを比較

特徴 slice() substring()
負のインデックス 使用できる(例:-1) 使用できない(0未満は0扱い)
書きやすさ ◎(シンプルで短い) △(やや複雑)
戻り値 指定範囲の文字列 同様
推奨度 ★★★★☆(実用性が高い) ★★☆☆☆(注意が必要)

slice()とsubstring()はどちらを使えばいい?

直感的に書けて、後ろから簡単に操作できる slice() の使用がおすすめです。
substring() はあえて使う理由がない限り、シンプルな slice() で代替可能です。

最後の一文字を調べる方法(endsWith / 比較演算子)

JavaScriptで、文字列の「末尾が特定の文字や単語で終わっているかを調べたい」というケースはとても多くあります。
以下のケースがよくあります。

  • URLの末尾がスラッシュ(/)で終わっているかチェックしたい
  • ファイル名の拡張子が .csv か .json か判定したい
  • ユーザーが入力した文字列の最後に特定の記号や改行があるか調べたい

こうした処理には、endsWith() メソッドや比較演算子を使う方法があります。

endsWith() を使って末尾を調べる(推奨)

ES6(ECMAScript 2015)以降では、endsWith() メソッドが使えるようになり、文字列の末尾を直感的に確認できるようになりました。

JavaScript:基本構文

str.endsWith(searchString[, length]);
  • searchString文字列の末尾に一致するか調べたい文字列
  • length(省略可):文字列のどこまでを末尾とみなすかを指定(文字数)

URLの末尾が「/」 かどうか調べる

JavaScript

const url = "https://example.com/";
console.log(url.endsWith("/")); // true

ファイル名の拡張子を判定

JavaScript

const filename = "data.csv";

if (filename.endsWith(".csv")) {
  console.log("CSVファイルです");
}

// 複数パターンの場合
const filename = "report.json";

if (filename.endsWith(".csv") || filename.endsWith(".json")) {
  console.log("CSVまたはJSONファイルです");
}

slice() や charAt() で比較する方法(細かい制御向き)

endsWith()メソッド以外の方法として、最後の一文字を取得して比較する方法もあります。 この方法は、単一の文字だけをチェックしたい場合や、古いブラウザへの対応が必要な場合に便利です。

slice(-1) を使って取得し、比較する

JavaScript

const input = "abc.";

if (input.slice(-1) === ".") {
  console.log("末尾にピリオドがあります");
}

charAt(length - 1) を使って取得し、比較する

JavaScript

const input = "abc.";

if (input.charAt(input.length - 1) === ".") {
    console.log("末尾にピリオドがあります");
}

charAt() は undefined になることがなく、安全性が高いですが、やや冗長なので最近は slice() がよく使用されます。

正規表現(RegExp)を使う応用例

より柔軟に末尾を確認したいときは、正規表現も有効です。

文字列が数字で終わっているか

JavaScript

const value = "商品番号123";

if (/\d$/.test(value)) {
  console.log("末尾が数字です");
}

改行で終わっているか

JavaScript

const text = "Hello world\n";

if (/\n$/.test(text)) {
  console.log("末尾に改行があります");
}

endsWithと比較演算の違いを比較

方法 説明 おすすめシーン
endsWith() 文字列の末尾をそのまま比較(可読性高) ファイル拡張子、URL末尾の判定など
slice() 最後の1文字を取得して比較 単一の記号や文字の確認
charAt() undefined にならず安全に取得可能 確実に1文字取得したい時
正規表現 パターンマッチングに柔軟に対応 数字・改行・記号など柔軟に対応

今のJavaScriptでは endsWith() を使うのが基本であり推奨です。

最後の一文字を削除する方法(slice / 正規表現)

最後の一文字を削除したい場合にも slice() がよく使われます。

slice(0, -1)で末尾1文字を削除

JavaScript

const word = "Hello!";
const trimmed = word.slice(0, -1); // "Hello"

これは、「先頭から末尾の1つ手前まで」を切り取る方法です。削除するだけならこれが一番簡単です。

正規表現で特定の文字だけを削除

特定の文字(たとえば「末尾のカンマ」だけを削除)する場合には、正規表現も有効です。

JavaScript

const data = "1,2,3,";
const result = data.replace(/,$/, ""); // "1,2,3"

このように、末尾がカンマの場合のみ削除され、他の末尾には影響を与えません。

よくある注意点とエラー対策

空文字列のときの対処

空の文字列に対して .slice(-1) や .substring(length - 1) を使うと、空文字列を返すため、コードがエラーになることはありません。
しかし、期待した動作にならない可能性があるので、チェックを入れておくと安心です。

JavaScript

const input = "";
const lastChar = input ? input.slice(-1) : ""; // 安全な取得

文字列以外の型が来る場合

ユーザー入力や外部データで、値が undefined や null の可能性があるときには、事前に文字列に変換することで安全に扱えます。

JavaScript

const value = null;
const safeString = String(value); // "null"
const lastChar = safeString.slice(-1); // "l"

使い分け早見表

最後に、本記事の要点をまとめます。

操作内容 方法例 おすすめシーン備考
最後の1文字を取得 str.slice(-1) 可読性・汎用性ともに◎
最後の1文字を削除 str.slice(0, -1) 最もシンプルで安全
特定文字の末尾確認 str.endsWith("文字") 長さ指定も可能
特定文字のみ削除 str.replace(/,$/, "") 末尾が一致した場合のみ削除
文字列の取得・比較 charAt(), substring() など 負の数に非対応に注意

まとめ

いかでしたでしょうか?
今回の記事では、JavaScriptで「最後の一文字」を取得・調べる・削除する方法について、基本から応用までを解説しました。

今回のポイントをまとめますと、次のとおりです。

今回の記事のまとめ

  • slice(-1) を使えば、末尾1文字を簡単に取得できます。
  • endsWith() を使うことで、文字列の末尾チェックが直感的に書けます。
  • substring() や charAt() も併用することで柔軟な処理が可能です。

JavaScriptでの文字列操作は、知っておくだけでコードの読みやすさ・保守性・バグの防止に大きく貢献します。
特に「最後の一文字」を扱う処理は地味ながら日常的によく使われる処理なので、今回紹介したメソッドの使い分け方を覚えておくことが大切です。
こうした小さなテクニックの積み重ねが、読みやすく、安全なコードを書く第一歩になります。

他にも JavaScript の文字列に関する技術や実用テクニックを随時発信しています。
「役に立った」と思っていただけた方は、ぜひブックマークやSNSでのシェアをお願いいたします!

最後までお読みいただきありがとうございました!

免責事項

  • 当ブログでは、執筆者の経験に基づいた技術情報や知識を提供していますが、その正確性や普遍性を保証するものではありません。情報は執筆時点のものであり、技術の進展により古くなる可能性があります。これらの情報を利用する際は、自己責任で行ってください。必要に応じて専門家の助言を求めることをお勧めします。
  • 当ブログで提供するプログラムコードは、執筆者の最善の知識に基づいていますが、その正確性や完全性を保証するものではありません。コードの利用や実行により生じた損害や問題については、一切の責任を負いかねます。コードの使用は、自己責任で行ってください。
  • 当サイトで使用しているスクリーンショット画像について、著作権はサイトの権利者に帰属します。掲載に不都合がある場合、お手数ですがお問い合わせフォームよりご連絡ください。
  • 当サイトからリンクよって他のサイトに移動された場合、移動先サイトで提供される情報、サービス等について一切の責任を負いかねますのでご了承ください。
  • 当サイトに掲載された内容によって生じた損害等の一切の責任を負いかねますのでご了承ください。