「文字列操作」タグアーカイブ

Java:trimだけじゃない!前後の空白を完全に除去する方法

Javaで文字列の前後の空白を削除したいとき、多くの人がまず trim() を使います。しかし、実務で扱うデータはもっと複雑。
実は trim() では 取り除けない空白 が存在します。

この記事では、

  • trim() の弱点

  • 完全に空白除去したいときのベストプラクティス

  • 実務(CSV・外部連携・Webアプリ)でのよくある落とし穴

をわかりやすく整理します。


■ trim() は万能ではない:取り除けない空白がある

trim() はあくまで Unicodeの制御文字(0x00–0x20) のみを対象にしています。

▼ trim()で削除できる例

  • 半角スペース " "

  • タブ \t

  • 改行 \n

  • 復帰 \r

▼ trim()で削除できない代表例

  • 全角スペース( )

  • ノーブレークスペース( )

  • ゼロ幅スペース(\u200B)

  • 特殊なUnicode空白

外部システム連携やExcel由来データで**“見えないゴミ空白”**が混入し、trim()では除去できないケースは非常に多いです。


■ 前後の空白を「完全に」除去する方法

① 正規表現による空白除去(最も汎用的)

▼ ポイント

  • \s = 制御文字+一般的な空白

  • \p{Z} = Unicodeの空白カテゴリ(全角スペースなど)

  • 前後どちらも削除できる

trim() では消えない全角・特殊スペースもまとめて除去できます。


■ ② Apache Commons Langの StringUtils を使う方法(簡単)

Apache Commons Lang が使えるなら、こちらが最も便利。

▼ trim()との違い

  • 全角スペースも削除できる

  • Unicode空白に幅広く対応

外部システムとの連携が多い業務システムでは定番です。


■ ③ カスタム実装で「ホワイトリスト方式」

どの空白を除去するかを 自分で定義したい場合

よく問題になる空白だけに絞りたいときに有効です。


■ 比較表:どの方法を使うべき?(実務ベース)

方法メリットデメリット実務での利用度
trim()標準、軽量、速い全角スペースに弱い
正規表現完全除去できる少し処理が重い
Apache StringUtils記述が最も簡単ライブラリが必要
カスタムRegex精密に制御可能コードの読みにくさ

■ 実務で多いトラブル例

● CSVインポート時に項目が一致しない

→ Excel入力データに 全角スペース が混入している
→ trim() では削除されずバリデーションNG

● 外部システムのレスポンス整形で意図せず不一致

→ JSONのフィールドに ノーブレークスペース が入っていた

● Webフォームの入力チェックで正しく弾けない

→ ゼロ幅スペース(\u200B)が悪さをしていた

Javaの文字列処理では 目に見えないUnicode空白 がしばしば問題を起こします。


■ まとめ:trim() だけに頼らないこと!

前後の空白を 100%除去 したいなら、

  1. 正規表現(\s + \p{Z})

  2. StringUtils.trim()

このどちらかが“安全策”です。

業務システム、外部連携、CSV処理など “実データを扱う場面” では trim() だけでは不十分なことが多いため、ぜひ今回の方法を取り入れてみてください。

Oracleで文字列操作を極める:SUBSTR・INSTR・REPLACEの活用術

Oracle SQLで文字列を自在に扱えるようになると、データ抽出や整形が格段に効率化します。
本記事では、文字列操作の3大関数「SUBSTR」「INSTR」「REPLACE」の使い方をわかりやすく解説します。


1️⃣ SUBSTR:文字列の一部を取り出す

SUBSTRは指定した位置から任意の長さの文字列を切り出す関数です。

🔸 使用例

結果:

📘 ポイント

  • 開始位置は 1から数える

  • 第3引数(文字数)を省略すると、開始位置以降をすべて取得

  • 負の値を指定すると末尾からカウントされる

→ 結果:EF


2️⃣ INSTR:文字列の位置を検索する

INSTRは、指定した文字が出現する**位置(インデックス)**を返します。

🔸 使用例

結果:

→ 2つ目のカンマ「,」が4文字目にあることを示します。

📘 応用テクニック

INSTRSUBSTRを組み合わせることで、区切り文字を含む文字列から特定部分を抜き出すことが可能です。

結果:


3️⃣ REPLACE:文字列の置換を行う

REPLACEは、指定した文字列を別の文字列に置き換える関数です。

🔸 使用例

結果:

📘 応用テクニック

REPLACEを使えば、不要な文字の削除も簡単に行えます。

結果:


4️⃣ 組み合わせテクニック:実用的な例

💡 メールドメインを抽出する例

結果例:

EMAILDOMAIN
user@example.comexample.com

💡 ファイル名から拡張子を削除

結果例:

FILE_NAMEBASE_NAME
report.xlsxreport

5️⃣ まとめ

関数用途主な特徴
SUBSTR部分文字列の取得開始位置・文字数指定が可能
INSTR指定文字の位置取得出現回数も指定可能
REPLACE文字列の置換不要文字の削除にも利用可能

これらを組み合わせることで、Oracle SQLでの文字列処理は自由自在になります。
ログ解析、ファイル名分割、メールドメイン抽出など、日常的な業務で大活躍する関数です。

PowerShell正規表現攻略ガイド:文字列操作が劇的に速くなる実践技

PowerShellでのテキスト処理で、もっと効率良く抽出・置換したいと思ったことはありませんか?
そんなときに威力を発揮するのが**正規表現(Regex)**です。

ログ解析、ファイル名整形、データ抽出、フォーマット変換など、
業務効率が劇的に変わる超重要スキルです。

本記事では、PowerShell × 正規表現の基本から実務で使えるテクニックまで徹底解説します。


正規表現の基本:PowerShellでの使い方

マッチ判定 -match

否定パターン

文字列からValue取得

$matches[1] にキャプチャした文字列が入る


よく使う正規表現パターン

用途パターン
数字\d+1234
英字[A-Za-z]+UserName
メール\w+@\w+\.\w+test@mail.com
日付\d{4}/\d{2}/\d{2}2025/01/10
任意の文字列.*?全部

実践例:ログからIPアドレスだけ抽出

出力


置換:-replaceでデータ整形

電話番号のハイフン削除

メールのドメインを隠す


ファイル名の一括リネーム

大量ファイルの命名変換で超便利


キャプチャした値を使った置換

日付フォーマット変換(YYYY/MM/DD → YYYY-MM-DD)


否定・条件抽出の例

IP行だけ抽出

エラー行だけ取得

“Warning”を含まない行


欲しいパターンはGitHub Copilotじゃなく、正規表現辞書を使え!

以下のキーワードで検索すると精度高い例が見つかります👇


まとめ

機能PowerShellでのコマンド
マッチ判定-match / -notmatch
抽出$matches[]
検索Select-String
置換-replace
ファイル検索Get-ChildItem + Select-String

正規表現を使いこなすと、
データ処理・ログ解析・自動化スクリプトが一気にプロレベルになります。