C#で、文字列の空白を削除する方法です。
空白を削除する方法
C#において、文字列内の空白を削除する場合、次の4つのメソッドを使用すれば、文字列内にある空白(半角スペース・全角スペース)を削除することが出来ます。
- Trim…文字列の前後にある空白を全て削除
- TrimStart…文字列の左(先頭)にある空白を全て削除
- TrimEnd…文字列の右(最後)にある空白を全て削除
- Replace…文字列中の全ての空白を削除
それぞれの役割が少し違いますので、サンプルコードを交えて解説します。
サンプルとして次の画面を用意しました。
この画面の仕様は、
- 左側のテキストボックスに文字を入力
- ボタンを押下して、空白文字を削除
- 空白文字を削除した結果を右側のテキストボックスに表示
という簡単なものです。
Trimメソッド
Trimメソッドは、文字列の前後にある空白文字(半角スペース・全角スペース)を全て削除します。
文字列の途中にある空白文字は削除されません。
サンプルコードはこちら。
private void cmdTrim_Click(object sender, EventArgs e) { try { //入力した文字を変数に代入 string strBefore = txtTrimBefore.Text; //入力した文字から空白を削除して、テキストボックスにセット txtTrimAfter.Text = strBefore.Trim(); } catch (Exception ex) { MessageBox.Show(ex.Message , "エラー" , MessageBoxButtons.OK , MessageBoxIcon.Error); } }
実際に実行してみましょう。
「 A B C D E 」という、各文字の前後に空白文字を入れて実行してみます。
画面上の「Trim」ボタンを押すと、次の結果になります。
文字列の前後にある空白文字が削除されました。
【Trimメソッドは文字列の前後の空白文字を削除する】
・Trim実行前:「 A B C D E 」←文字列の前後に空白文字がある
・Trim実行後:「A B C D E」←文字列の前後にある空白文字が削除された
TrimStartメソッド
TrimStartメソッドは、文字列の左(先頭)にある空白文字(半角スペース・全角スペース)を全て削除します。
VB.NETではRTrimと呼ばれているものと機能は同じです。
文字列の途中にある空白文字や、文字列の先頭にある空白文字は削除されません。
サンプルコードはこちら。
private void cmdTrimStart_Click(object sender, EventArgs e) { try { //入力した文字を変数に代入 string strBefore = txtTrimStartBefore.Text; //入力した文字から空白を削除して、テキストボックスにセット txtTrimStartAfter.Text = strBefore.TrimStart(); } catch (Exception ex) { MessageBox.Show(ex.Message , "エラー" , MessageBoxButtons.OK , MessageBoxIcon.Error); } }
実際に実行してみましょう。
「 A B C D E 」という、各文字の前後に空白文字を入れて実行してみます。
画面上の「TrimStart」ボタンを押すと、次の結果になります。
文字列の前にある空白文字が削除されました。
【TrimStartメソッドは文字列の前にある空白文字を削除する】
・TrimStart実行前:「 A B C D E 」←文字列の前後に空白文字がある
・TrimStart実行後:「A B C D E 」←文字列の前にある空白文字が削除された
TrimEndメソッド
TrimEndメソッドは、文字列の右(最後)にある空白文字(半角スペース・全角スペース)を全て削除します。
VB.NETではLTrimと呼ばれているものと機能は同じです。
文字列の途中にある空白文字や、文字列の末尾にある空白文字は削除されません。
サンプルコードはこちら。
private void cmdTrimEnd_Click(object sender, EventArgs e) { try { //入力した文字を変数に代入 string strBefore = txtTrimEndBefore.Text; //入力した文字から空白を削除して、テキストボックスにセット txtTrimEndAfter.Text = strBefore.TrimEnd(); } catch (Exception ex) { MessageBox.Show(ex.Message , "エラー" , MessageBoxButtons.OK , MessageBoxIcon.Error); }
実際に実行してみましょう。
「 A B C D E 」という、各文字の前後に空白文字を入れて実行してみます。
画面上の「TrimEnd」ボタンを押すと、次の結果になります。
文字列の後ろにある空白文字が削除されました。
【TrimEndメソッドは文字列の後ろにある空白文字を削除する】
・TrimEnd実行前:「 A B C D E 」←文字列の前後に空白文字がある
・TrimEnd実行後:「 A B C D E」←文字列の後ろにある空白文字が削除された
Replaceメソッド
Replaceメソッドは、文字列を置換するメソッドです。
本来は、
文字列内にあるAという文字をBに置換する
という目的で使用しますが、文字列内にある空白文字を全て削除する目的でも使用可能です。
サンプルコードはこちら。
private void cmdReplace_Click(object sender, EventArgs e) { try { //入力した文字を変数に代入 string strBefore = txtReplaceBefore.Text; //入力した文字から空白を削除して、テキストボックスにセット txtReplaceAfter.Text = strBefore.Replace(" ","").Replace(" ",""); } catch (Exception ex) { MessageBox.Show(ex.Message , "エラー" , MessageBoxButtons.OK , MessageBoxIcon.Error); } }
実際に実行してみましょう。
「 A B C D E 」という、各文字の前後に空白文字を入れて実行してみます。
画面上の「Replace」ボタンを押すと、次の結果になります。
文字列内にある全ての空白文字が削除されました。
【Replaceメソッドを使って、文字列内の全ての空白文字を削除する】
・Replace実行前:「 A B C D E 」←各文字の前後に半角スペースがある
・Replace実行後:「ABCDE」←文字列内にある全ての半角スペースが削除された
ただし、Replaceメソッドの場合は少し注意が必要です。
Trim・TrimStart・TrimEndの場合、半角スペースと全角スペースの両方を削除してくれますが、Replaceはキャラクター単位での置換のため、半角スペースと全角スペースの両方を明示的に置換する必要があります。
例えば次の様に、半角スペースの削除と全角スペースの削除のReplaceメソッドを繋げるという方法があります。
txtReplaceAfter.Text = strBefore.Replace(" ","").Replace(" ","");
参考サイト
String.Trim メソッド (System) | Microsoft Docs
String.TrimStart メソッド (System) | Microsoft Docs
String.TrimEnd メソッド (System) | Microsoft Docs
String.Replace メソッド (System) | Microsoft Docs
.