ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
| この記事の要点 |
|
空白を削除: trim / strip
もっとも一般的な「先頭・末尾の空白削除」は trim() / strip() で行います。Java 11 以降はUnicode 空白(全角スペース U+3000 等)も削除できる strip() を推奨。
String s = " hello world ";
s.trim(); // "hello world" — U+0020 以下のみ削除
s.strip(); // "hello world" — Unicode 空白も削除 (Java 11+)
s.stripLeading(); // "hello world "
s.stripTrailing(); // " hello world"
// 全角スペースを含む例
String z = " 全角空白 "; // 全角スペース U+3000
z.trim(); // " 全角空白 " — 削除されない!
z.strip(); // "全角空白" — 削除される
trim と strip の違い
| メソッド | 導入 | 削除対象 |
|---|---|---|
trim() | Java 1.0 | U+0020 (半角スペース) 以下のコードポイント(\t \n \r 等) |
strip() | Java 11 | Character.isWhitespace(int) が true となるすべて(全角スペース U+3000、Em スペース等を含む) |
stripLeading() | Java 11 | 先頭のみ |
stripTrailing() | Java 11 | 末尾のみ |
先頭・末尾の 1 文字を削除
String s = "(hello)";
// substring で両端 1 文字削除
String r1 = s.substring(1, s.length() - 1); // "hello"
// 先頭 1 文字だけ
s.substring(1); // "hello)"
// 末尾 1 文字だけ
s.substring(0, s.length() - 1); // "(hello"
// 安全に(空文字対策)
String safe = (s != null && s.length() >= 2)
? s.substring(1, s.length() - 1) : "";
正規表現で削除
String s = "***hello***";
// 先頭・末尾 1 文字を削除
s.replaceAll("^.|.$", ""); // "**hello**"
// 先頭の * 連続を削除
s.replaceAll("^\\*+", ""); // "hello***"
// 末尾の * 連続を削除
s.replaceAll("\\*+$", ""); // "***hello"
// 両端の * を削除
s.replaceAll("^\\*+|\\*+$", ""); // "hello"
// 両端の空白(trim 相当)
String t = " abc ";
t.replaceAll("^\\s+|\\s+$", ""); // "abc"
// 改行を含む文字列の先頭・末尾の空白
String multi = "\n abc \n";
multi.replaceAll("^\\s+|\\s+$", ""); // "abc"
StringBuilder で削除
StringBuilder sb = new StringBuilder("hello");
// 末尾 1 文字
sb.deleteCharAt(sb.length() - 1); // "hell"
// 先頭 1 文字
sb.deleteCharAt(0); // "ell"
// 範囲削除
sb = new StringBuilder("hello world");
sb.delete(5, 6); // "helloworld"(インデックス 5 のスペース削除)
// 末尾を切り詰める
sb.setLength(sb.length() - 1); // 末尾 1 文字削除
sb.setLength(3); // 先頭 3 文字だけ残す
commons-lang3 StringUtils.strip()
Apache Commons の StringUtils.strip(str, stripChars) は指定した文字を両端から削除できます。null も安全に扱えます。
import org.apache.commons.lang3.StringUtils;
StringUtils.strip(null); // null
StringUtils.strip(""); // ""
StringUtils.strip(" abc "); // "abc" — 空白
StringUtils.strip("abcXY", "XY"); // "abc"
StringUtils.strip("**abc**", "*"); // "abc"
StringUtils.stripStart("***abc", "*"); // "abc"
StringUtils.stripEnd("abc***", "*"); // "abc"
StringUtils.stripAccents("café"); // "cafe" — アクセント削除
用途別の使い分け
| 削除したいもの | 推奨 |
|---|---|
| 両端の空白(ASCII) | str.trim() |
| 両端の空白(全角含む) | str.strip() (Java 11+) |
| 先頭・末尾の 1 文字 | str.substring(1, str.length() - 1) |
| 先頭・末尾の任意の連続文字 | StringUtils.strip(str, "chars") |
| 改行のみ削除(CRLF 対応) | str.replaceAll("\\r?\\n$", "") |
| BOM 削除 | str.replaceAll("^\\uFEFF", "") |
| 大量に処理する場合 | StringBuilder で都度生成を避ける |
典型的なユースケース
// 1. CSV の各セルの前後空白除去
String[] cells = line.split(",");
for (int i = 0; i < cells.length; i++) cells[i] = cells[i].strip();
// 2. ユーザー入力の正規化
String input = request.getParameter("name");
String name = input == null ? "" : input.strip();
// 3. ダブルクォートで囲まれた文字列の外側を剥がす
String quoted = "\"hello\"";
if (quoted.startsWith("\"") && quoted.endsWith("\"")) {
quoted = quoted.substring(1, quoted.length() - 1);
}
// 4. ファイル読み込みで末尾改行除去
String line = reader.readLine(); // BufferedReader は \n は除去済
String content = Files.readString(path).stripTrailing();
// 5. URL の末尾スラッシュ除去
String url = "https://example.com/api/";
String normalized = url.endsWith("/") ? url.substring(0, url.length() - 1) : url;
FAQ
Q: trim と strip、どちらを使うべき?
A: 全角スペースを扱う日本語環境では strip() 推奨。Java 11+ なら基本 strip()。Java 8 だと trim() しかない。
Q: 元の文字列は変わる?
A: 変わりません。String は不変 (immutable) なので、戻り値を受け取って使う必要があります。
Q: trim() が null を返すことはある?
A: ありません。null に対しては NPE。先に str == null を確認するか、StringUtils.strip() を使う。
ページの作成
親となるページを選択してください。
親ページに紐づくページを子ページといいます。
例: 親=スポーツ, 子1=サッカー, 子2=野球
子ページを親ページとして更に子ページを作成することも可能です。
例: 親=サッカー, 子=サッカーのルール
親ページはいつでも変更することが可能なのでとりあえず作ってみましょう!
子ページ
子ページはありません
人気ページ
- 1 Eclipseで「サーバーに追加または除去できるリソースがありません。」の原因と対処法
- 2 tomcat の起動 / 停止ログと catalina.log・catalina.out の違い
- 3 JavaScript base URL 取得方法|window.location.origin と SSR/Node.js 対応
- 4 YouTube Data API v3 エラー一覧|403/400/404 の主要原因と切り分け
- 5 Spring Frameworkのアノテーション一覧
- 6 Laravel エラー一覧|500/Blade/DB 接続/ルーティングの代表エラー
- 7 3Dグラフィックスとは|モデリング/レンダリング/主要ソフトウェア (Blender / Maya)
- 8 【Spring】@Valueアノテーションとは
- 9 CATALINA_HOME の確認方法 (Linux / Mac)
- 10 【Spring】@Autowiredアノテーションとは
最近更新/作成されたページ
- IPv6とは|128bitアドレス・コロン16進表記/::省略・リンクローカル・SLAAC・デュアルスタック NEW 2026-06-22 12:34:44
- VPNとは|暗号トンネル・サイト間/リモートアクセス・IPsec/SSL-VPN/WireGuardを解説 NEW 2026-06-22 12:19:10
- MAC アドレスフィルタリングの仕組みと限界 | ネットワーク入門 NEW 2026-06-22 12:19:10
- WebSocket とは 全二重リアルタイム通信 ws/wss | ネットワーク入門 NEW 2026-06-22 12:17:25
- Web通信プロトコル入門 HTTP/2・HTTP/3・WebSocket・gRPC・WebRTC | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/2 とは 多重化・HPACK・バイナリフレーム | ネットワーク入門 NEW 2026-06-22 12:17:25
- WebRTC とは ブラウザ間 P2P の音声・映像・データ通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- gRPC とは HTTP/2 + Protocol Buffers の高速 RPC | ネットワーク入門 NEW 2026-06-22 12:17:25
- HTTP/3 (QUIC) とは UDP ベースの低遅延 Web 通信 | ネットワーク入門 NEW 2026-06-22 12:17:25
- CDN とは エッジキャッシュ・TTL・Cloudflare/CloudFront | ネットワーク入門 NEW 2026-06-22 12:17:24
- HAProxy とは frontend/backend と設定例 | ネットワーク入門 NEW 2026-06-22 12:17:24
- ファイアウォールとは|パケットフィルタ・ステートフル・DMZ・次世代FW(L4/L7)を解説 NEW 2026-06-22 12:17:24
- TLS/SSLの仕組み|ハンドシェイク・暗号スイート・前方秘匿性・証明書検証をわかりやすく解説 NEW 2026-06-22 12:17:24
- 証明書と認証局(CA)とは|X.509・信頼チェーン・DV/OV/EV・失効(CRL/OCSP)を解説 NEW 2026-06-22 12:17:24
- iptables/nftablesとは|テーブル・チェーン・ルール例・永続化をLinux視点で解説 NEW 2026-06-22 12:17:24
コメントを削除してもよろしいでしょうか?