【C#】空白の判定・削除・置換方法を完全解説|Trim・IsNullOrWhiteSpaceの使い方
はじめに
C#で文字列を扱うとき、「空白」の判定・削除・置換は非常によく使う処理です。
たとえば、ユーザーが入力フォームに何も入力していないかをチェックしたり、CSVやテキストファイルから読み込んだ値の余分なスペースを削除したり、検索キーワードの前後に入った空白を整形したりする場面があります。
C#には、空白を扱うための代表的なメソッドとして次のようなものがあります。
C#string.IsNullOrEmpty(value);
string.IsNullOrWhiteSpace(value);
value.Trim();
value.TrimStart();
value.TrimEnd();
value.Replace(" ", "");
ただし、C#の空白処理では「null」「空文字」「半角スペース」「全角スペース」「タブ」「改行」などを正しく区別することが重要です。
この記事では、C#で空白を判定する方法、削除する方法、置換する方法を、実務で使いやすい形でわかりやすく解説します。
1. C#における「空白」とは?文字列処理で扱う空白の基本
C#で空白を扱う前に、まず「空白」として扱われる文字の種類を理解しておきましょう。
一見同じように見える空白でも、実際には文字コードや意味が異なります。
1-1. 半角スペース・全角スペース・タブ・改行の違い
C#でよく扱う空白には、主に次のような種類があります。
| 種類 | 例 | 説明 |
|---|---|---|
| 半角スペース | " " | 英数字の間などで使われる一般的なスペース |
| 全角スペース | " " | 日本語入力で使われる幅の広いスペース |
| タブ | "\t" | インデントやTSVなどで使われる空白文字 |
| 改行 | "\r\n"、"\n" | 行の区切りを表す文字 |
| 空文字 | "" | 文字数が0の文字列 |
| null | null | 文字列オブジェクト自体が存在しない状態 |
たとえば、半角スペースと全角スペースは見た目は似ていますが、C#では別の文字として扱われます。
C#string halfSpace = " ";
string fullSpace = " ";
Console.WriteLine(halfSpace == fullSpace); // False
そのため、半角スペースだけを削除したつもりでも、全角スペースが残ってしまうことがあります。
C#string text = " C# 入門 ";
string result = text.Replace(" ", "");
Console.WriteLine(result); // " C#入門 "
この例では、Replace(" ", "") によって半角スペースは削除されますが、全角スペースは削除されません。
1-2. null・空文字・空白文字列の違い
C#では、null、空文字、空白文字列はそれぞれ異なります。
C#string value1 = null;
string value2 = "";
string value3 = " ";
string value4 = " ";
string value5 = "\t";
それぞれの意味は次のとおりです。
| 値 | 意味 |
|---|---|
null | 文字列が存在しない |
"" | 文字列は存在するが、文字数が0 |
" " | 半角スペースが1文字入っている |
" " | 全角スペースが1文字入っている |
"\t" | タブ文字が1文字入っている |
空文字は文字数が0ですが、半角スペースや全角スペースは「空白文字が入っている文字列」です。
C#Console.WriteLine("".Length); // 0
Console.WriteLine(" ".Length); // 1
Console.WriteLine(" ".Length); // 1
この違いを理解していないと、入力チェックで意図しない値を通してしまうことがあります。
1-3. C#で空白判定が必要になる主な場面
C#で空白判定が必要になる場面は多くあります。
代表的な例は次のとおりです。
C#string userName = " ";
if (string.IsNullOrWhiteSpace(userName))
{
Console.WriteLine("ユーザー名を入力してください。");
}
主な利用場面としては、以下のようなケースがあります。
| 場面 | 空白判定が必要な理由 |
|---|---|
| 入力フォーム | 未入力や空白だけの入力を防ぐ |
| 検索キーワード | 余分なスペースによる検索ミスを防ぐ |
| CSV・TSV読み込み | データの前後にある不要な空白を除去する |
| ログ解析 | 空行や空白行を除外する |
| APIリクエスト | 必須パラメータの空白チェックを行う |
| データベース登録 | 空白だけのデータ登録を防ぐ |
特に入力チェックでは、"" だけでなく " " や " " のような空白だけの文字列も無効にしたいことが多いです。
1-4. 空白処理で起こりやすい不具合
C#の空白処理でよくある不具合には、次のようなものがあります。
C#string name = " ";
if (!string.IsNullOrEmpty(name))
{
Console.WriteLine("入力ありとして処理される");
}
このコードでは、name に半角スペースだけが入っています。
string.IsNullOrEmpty は null と空文字 "" しか判定しないため、半角スペースだけの文字列は「入力あり」として扱われます。
その結果、次のような問題が発生することがあります。
| 不具合 | 原因 |
|---|---|
| 空白だけのユーザー名が登録される | IsNullOrEmpty だけで判定している |
| 全角スペースが削除されない | 半角スペースだけを Replace している |
| 改行だけの入力が有効になる | 改行文字を空白として判定していない |
| 検索結果がヒットしない | 検索文字列の前後に空白が残っている |
| CSV取り込みで値が一致しない | データの前後に余分な空白がある |
このような不具合を防ぐには、目的に応じて IsNullOrEmpty、IsNullOrWhiteSpace、Trim、Replace を正しく使い分けることが大切です。
2. C#で空白を判定する方法
C#で空白を判定する方法はいくつかあります。
代表的な方法は次の3つです。
C#string.IsNullOrEmpty(value);
string.IsNullOrWhiteSpace(value);
value.Trim().Length == 0;
それぞれ判定できる範囲が異なるため、違いを理解して使い分けましょう。
2-1. string.IsNullOrEmptyでnull・空文字を判定する
string.IsNullOrEmpty は、文字列が null または空文字 "" かどうかを判定するメソッドです。
C#string value1 = null;
string value2 = "";
string value3 = " ";
Console.WriteLine(string.IsNullOrEmpty(value1)); // True
Console.WriteLine(string.IsNullOrEmpty(value2)); // True
Console.WriteLine(string.IsNullOrEmpty(value3)); // False
IsNullOrEmpty の判定対象は、あくまで null と "" です。
半角スペース、全角スペース、タブ、改行などが含まれている場合は、空ではない文字列として扱われます。
C#Console.WriteLine(string.IsNullOrEmpty(" ")); // False
Console.WriteLine(string.IsNullOrEmpty(" ")); // False
Console.WriteLine(string.IsNullOrEmpty("\t")); // False
Console.WriteLine(string.IsNullOrEmpty("\n")); // False
そのため、入力チェックで「空白だけの入力も未入力として扱いたい」場合には、IsNullOrEmpty では不十分です。
2-2. string.IsNullOrWhiteSpaceで空白文字列まで判定する
string.IsNullOrWhiteSpace は、文字列が null、空文字、または空白文字だけで構成されているかを判定するメソッドです。
C#string value1 = null;
string value2 = "";
string value3 = " ";
string value4 = " ";
string value5 = "\t";
string value6 = "\n";
Console.WriteLine(string.IsNullOrWhiteSpace(value1)); // True
Console.WriteLine(string.IsNullOrWhiteSpace(value2)); // True
Console.WriteLine(string.IsNullOrWhiteSpace(value3)); // True
Console.WriteLine(string.IsNullOrWhiteSpace(value4)); // True
Console.WriteLine(string.IsNullOrWhiteSpace(value5)); // True
Console.WriteLine(string.IsNullOrWhiteSpace(value6)); // True
IsNullOrWhiteSpace は、入力チェックで非常によく使われます。
たとえば、ユーザー名が未入力または空白だけの場合にエラーにするには、次のように書けます。
C#string userName = " ";
if (string.IsNullOrWhiteSpace(userName))
{
Console.WriteLine("ユーザー名を入力してください。");
}
この場合、userName が null、""、" "、" "、"\t"、"\n" などであれば、すべて未入力として判定できます。
2-3. Trimと組み合わせて空白だけの文字列を判定する
Trim を使って前後の空白を削除したうえで、文字数を確認する方法もあります。
C#string value = " ";
if (value.Trim().Length == 0)
{
Console.WriteLine("空白だけの文字列です。");
}
ただし、この書き方は value が null の場合に例外が発生します。
C#string value = null;
// NullReferenceException が発生する
if (value.Trim().Length == 0)
{
Console.WriteLine("空です。");
}
Trim を使う場合は、事前に null チェックが必要です。
C#string value = null;
if (value == null || value.Trim().Length == 0)
{
Console.WriteLine("nullまたは空白だけの文字列です。");
}
ただし、現在のC#では、空白だけかどうかを判定したい場合は string.IsNullOrWhiteSpace を使うほうが簡潔です。
C#if (string.IsNullOrWhiteSpace(value))
{
Console.WriteLine("null、空文字、または空白だけの文字列です。");
}
2-4. 半角スペース・全角スペースを個別に判定する方法
半角スペースや全角スペースを個別に判定したい場合は、Contains や比較演算子を使います。
半角スペースが含まれているか判定する例です。
C#string text = "C# 入門";
if (text.Contains(" "))
{
Console.WriteLine("半角スペースが含まれています。");
}
全角スペースが含まれているか判定する例です。
C#string text = "C# 入門";
if (text.Contains(" "))
{
Console.WriteLine("全角スペースが含まれています。");
}
文字列が半角スペースだけかどうかを判定する場合は、次のように書けます。
C#string value = " ";
if (value == " ")
{
Console.WriteLine("半角スペース1文字です。");
}
文字列が全角スペースだけかどうかを判定する場合は、次のように書けます。
C#string value = " ";
if (value == " ")
{
Console.WriteLine("全角スペース1文字です。");
}
複数の半角スペースだけで構成されているかを判定したい場合は、All を使う方法があります。
C#using System.Linq;
string value = " ";
if (value.All(c => c == ' '))
{
Console.WriteLine("半角スペースだけです。");
}
全角スペースだけで構成されているかを判定する場合は、次のようにします。
C#using System.Linq;
string value = " ";
if (value.All(c => c == ' '))
{
Console.WriteLine("全角スペースだけです。");
}
ただし、All は空文字に対しても true を返します。
空文字を除外したい場合は、Length > 0 も合わせて判定します。
C#using System.Linq;
string value = "";
if (value.Length > 0 && value.All(c => c == ' '))
{
Console.WriteLine("半角スペースだけです。");
}
2-5. タブ・改行を含む空白判定の注意点
タブや改行を含む文字列も、見た目上は空に見えることがあります。
C#string value = "\t\r\n";
このような文字列は、IsNullOrEmpty では false になります。
C#Console.WriteLine(string.IsNullOrEmpty("\t\r\n")); // False
しかし、IsNullOrWhiteSpace では true になります。
C#Console.WriteLine(string.IsNullOrWhiteSpace("\t\r\n")); // True
ログファイルやテキストファイルを読み込む場合、空行に見えてもタブやスペースが含まれていることがあります。
C#string line = "\t ";
if (string.IsNullOrWhiteSpace(line))
{
Console.WriteLine("空行として扱います。");
}
空行判定では、line == "" や line.Length == 0 だけでなく、string.IsNullOrWhiteSpace を使うのが安全です。
3. IsNullOrEmptyとIsNullOrWhiteSpaceの違い
C#で空白判定を行うときに迷いやすいのが、IsNullOrEmpty と IsNullOrWhiteSpace の違いです。
どちらも文字列が空かどうかを判定するメソッドですが、判定対象が異なります。
3-1. 判定対象の違いを比較表で解説
IsNullOrEmpty と IsNullOrWhiteSpace の違いは、次の表のとおりです。
| 値 | IsNullOrEmpty | IsNullOrWhiteSpace |
|---|---|---|
null | true | true |
"" | true | true |
" " | false | true |
" " | false | true |
"\t" | false | true |
"\n" | false | true |
"abc" | false | false |
" abc " | false | false |
実際のコードで確認してみましょう。
C#string[] values =
{
null,
"",
" ",
" ",
"\t",
"\n",
"abc",
" abc "
};
foreach (var value in values)
{
Console.WriteLine($"[{value}]");
Console.WriteLine($"IsNullOrEmpty: {string.IsNullOrEmpty(value)}");
Console.WriteLine($"IsNullOrWhiteSpace: {string.IsNullOrWhiteSpace(value)}");
Console.WriteLine();
}
入力チェックで空白だけの文字列を拒否したい場合は、基本的に IsNullOrWhiteSpace を使います。
3-2. 半角スペースだけの文字列を渡した場合
半角スペースだけの文字列を渡した場合、IsNullOrEmpty は false、IsNullOrWhiteSpace は true になります。
C#string value = " ";
Console.WriteLine(string.IsNullOrEmpty(value)); // False
Console.WriteLine(string.IsNullOrWhiteSpace(value)); // True
IsNullOrEmpty は、半角スペースを「文字が入っている」と判断します。
一方で、IsNullOrWhiteSpace は半角スペースを空白文字として扱い、「実質的に未入力」と判断します。
そのため、フォーム入力で次のようなコードを書くと、半角スペースだけの入力が通ってしまいます。
C#string name = " ";
if (!string.IsNullOrEmpty(name))
{
Console.WriteLine("登録処理を実行します。");
}
これを防ぐには、次のようにします。
C#string name = " ";
if (!string.IsNullOrWhiteSpace(name))
{
Console.WriteLine("登録処理を実行します。");
}
else
{
Console.WriteLine("名前を入力してください。");
}
3-3. 全角スペースだけの文字列を渡した場合
全角スペースだけの文字列を渡した場合も、IsNullOrEmpty は false、IsNullOrWhiteSpace は true になります。
C#string value = " ";
Console.WriteLine(string.IsNullOrEmpty(value)); // False
Console.WriteLine(string.IsNullOrWhiteSpace(value)); // True
日本語の入力フォームでは、ユーザーが全角スペースを入力することがあります。
そのため、日本語サービスや業務システムでは、全角スペースだけの入力も未入力として扱うことが重要です。
C#string address = " ";
if (string.IsNullOrWhiteSpace(address))
{
Console.WriteLine("住所を入力してください。");
}
ただし、全角スペースを「意味のある文字」として扱いたい特殊なケースでは、IsNullOrWhiteSpace ではなく、個別に判定条件を作る必要があります。
3-4. 実務ではどちらを使うべきか
実務で入力チェックを行う場合は、基本的に string.IsNullOrWhiteSpace を使うのがおすすめです。
C#if (string.IsNullOrWhiteSpace(input))
{
Console.WriteLine("入力値が空です。");
}
理由は、ユーザーが空白だけを入力した場合も未入力として扱えるからです。
一方で、string.IsNullOrEmpty が適している場面もあります。
たとえば、空白を意味のある入力として扱いたい場合です。
C#string password = " ";
if (string.IsNullOrEmpty(password))
{
Console.WriteLine("パスワードが未入力です。");
}
このように、空白を有効な値として扱う仕様であれば、IsNullOrEmpty を使うこともあります。
使い分けの目安は次のとおりです。
| 目的 | おすすめ |
|---|---|
| 入力フォームの未入力チェック | IsNullOrWhiteSpace |
| 空白だけの入力を無効にしたい | IsNullOrWhiteSpace |
| nullと空文字だけを判定したい | IsNullOrEmpty |
| 空白も有効な文字として扱いたい | IsNullOrEmpty |
| ファイルの空行判定 | IsNullOrWhiteSpace |
3-5. 入力チェックで使う場合の注意点
入力チェックで IsNullOrWhiteSpace を使う場合、空白だけの入力を拒否できます。
C#string input = " ";
if (string.IsNullOrWhiteSpace(input))
{
Console.WriteLine("入力してください。");
}
ただし、入力値を保存したり比較したりする場合は、判定だけでなく整形も必要になることがあります。
たとえば、前後に余分な空白が入っている場合です。
C#string input = " C# ";
if (!string.IsNullOrWhiteSpace(input))
{
string normalized = input.Trim();
Console.WriteLine(normalized); // "C#"
}
入力チェックでは、次のように「空白判定」と「前後の空白削除」を組み合わせることが多いです。
C#string input = " 山田太郎 ";
if (string.IsNullOrWhiteSpace(input))
{
Console.WriteLine("名前を入力してください。");
}
else
{
string name = input.Trim();
Console.WriteLine($"登録名: {name}");
}
注意点として、Trim は文字列の前後の空白を削除しますが、文字列の途中にある空白は削除しません。
C#string input = " C# 入門 ";
string result = input.Trim();
Console.WriteLine(result); // "C# 入門"
文字列内の空白も削除したい場合は、Replace などを使う必要があります。
4. C#で文字列の前後の空白を削除する方法
C#で文字列の前後の空白を削除するには、Trim、TrimStart、TrimEnd を使います。
| メソッド | 削除対象 |
|---|---|
Trim() | 先頭と末尾の空白を削除 |
TrimStart() | 先頭の空白を削除 |
TrimEnd() | 末尾の空白を削除 |
文字列の前後だけを整形したい場合は、これらのメソッドを使うのが基本です。
4-1. Trimで前後の空白を削除する
Trim は、文字列の先頭と末尾にある空白を削除します。
C#string text = " C# 入門 ";
string result = text.Trim();
Console.WriteLine($"[{result}]"); // [C# 入門]
Trim は、文字列の前後にある空白を削除しますが、文字列の途中にある空白は削除しません。
C#string text = " C# 入門 ";
string result = text.Trim();
Console.WriteLine(result); // "C# 入門"
この場合、C# と 入門 の間にある半角スペースは残ります。
入力フォームの値を保存する前に、前後の余分な空白を削除したい場合によく使います。
C#string input = " tanaka@example.com ";
string email = input.Trim();
Console.WriteLine(email); // "tanaka@example.com"
ただし、対象の文字列が null の場合に Trim を呼び出すと、NullReferenceException が発生します。
C#string text = null;
// 例外が発生する
string result = text.Trim();
null の可能性がある場合は、事前にチェックします。
C#string text = null;
string result = text == null ? "" : text.Trim();
Console.WriteLine(result); // ""
または、null条件演算子を使うこともできます。
C#string text = null;
string result = text?.Trim();
Console.WriteLine(result == null); // True
4-2. TrimStartで先頭の空白を削除する
TrimStart は、文字列の先頭にある空白だけを削除します。
C#string text = " C# 入門 ";
string result = text.TrimStart();
Console.WriteLine($"[{result}]"); // [C# 入門 ]
末尾の空白は残したまま、先頭の空白だけを削除したい場合に使います。
たとえば、インデントを削除したい場合に利用できます。
C#string line = " Console.WriteLine(\"Hello\");";
string result = line.TrimStart();
Console.WriteLine(result); // Console.WriteLine("Hello");
特定の文字だけを先頭から削除することもできます。
C#string text = "---C#入門";
string result = text.TrimStart('-');
Console.WriteLine(result); // C#入門
複数の文字を指定することも可能です。
C#string text = "/// C#入門";
string result = text.TrimStart('/', ' ');
Console.WriteLine(result); // C#入門
4-3. TrimEndで末尾の空白を削除する
TrimEnd は、文字列の末尾にある空白だけを削除します。
C#string text = " C# 入門 ";
string result = text.TrimEnd();
Console.WriteLine($"[{result}]"); // [ C# 入門]
先頭の空白は残したまま、末尾の空白だけを削除したい場合に使います。
たとえば、行末の余分なスペースを削除したい場合に便利です。
C#string line = "C# 入門 ";
string result = line.TrimEnd();
Console.WriteLine($"[{result}]"); // [C# 入門]
特定の文字だけを末尾から削除することもできます。
C#string text = "C#入門...";
string result = text.TrimEnd('.');
Console.WriteLine(result); // C#入門
ファイルパスやURLの末尾にある特定文字を削除したい場合にも利用できます。
C#string url = "https://example.com/";
string result = url.TrimEnd('/');
Console.WriteLine(result); // https://example.com
4-4. Trimで削除できる空白文字の範囲
引数なしの Trim は、文字列の前後にある空白文字を削除します。
対象には、半角スペースだけでなく、タブや改行なども含まれます。
C#string text = "\t C# 入門 \r\n";
string result = text.Trim();
Console.WriteLine($"[{result}]"); // [C# 入門]
全角スペースも削除対象になります。
C#string text = " C# 入門 ";
string result = text.Trim();
Console.WriteLine($"[{result}]"); // [C# 入門]
ただし、Trim が削除するのは前後の空白だけです。
文字列の途中にある空白は削除されません。
C#string text = " C# 入門 ";
string result = text.Trim();
Console.WriteLine(result); // "C# 入門"
この例では、先頭と末尾の全角スペースは削除されますが、C# と 入門 の間にある全角スペースは残ります。
4-5. 全角スペースを確実に削除する方法
前後の全角スペースを削除したいだけであれば、通常は Trim で対応できます。
C#string text = " C# 入門 ";
string result = text.Trim();
Console.WriteLine(result); // "C# 入門"
ただし、全角スペースを明示的に削除したい場合は、削除対象の文字を指定することもできます。
C#string text = " C# 入門 ";
string result = text.Trim(' ');
Console.WriteLine(result); // "C# 入門"
半角スペースと全角スペースの両方を明示的に削除したい場合は、次のように指定します。
C#string text = " C# 入門 ";
string result = text.Trim(' ', ' ');
Console.WriteLine(result); // "C# 入門"
タブや改行も含めて前後の空白を削除したい場合は、引数なしの Trim を使うのが便利です。
C#string text = "\t C# 入門 \r\n";
string result = text.Trim();
Console.WriteLine(result); // "C# 入門"
一方で、文字列内にある全角スペースも削除したい場合は、Trim ではなく Replace を使います。
C#string text = "C# 入門";
string result = text.Replace(" ", "");
Console.WriteLine(result); // "C#入門"
5. C#で文字列内の空白を削除する方法
文字列の前後だけでなく、文字列内にある空白も削除したい場合は、Replace を使います。
Trim は前後の空白だけを削除しますが、Replace は文字列内にある指定した文字をすべて置換できます。
C#string text = "C# 入門 基礎";
string result = text.Replace(" ", "");
Console.WriteLine(result); // "C#入門基礎"
5-1. Replaceで半角スペースを削除する
半角スペースを削除するには、Replace(" ", "") を使います。
C#string text = "C# 入門 基礎";
string result = text.Replace(" ", "");
Console.WriteLine(result); // "C#入門基礎"
Replace は、対象の文字列に含まれるすべての半角スペースを削除します。
C#string text = " C# 入門 基礎 ";
string result = text.Replace(" ", "");
Console.WriteLine(result); // "C#入門基礎"
この場合、先頭・途中・末尾の半角スペースがすべて削除されます。
ただし、Replace(" ", "") で削除できるのは半角スペースだけです。
C#string text = "C# 入門 基礎";
string result = text.Replace(" ", "");
Console.WriteLine(result); // "C# 入門基礎"
この例では、入門 の前にある全角スペースは残ります。
半角スペースだけを削除したい場合には問題ありませんが、全角スペースも削除したい場合は別途処理が必要です。
5-2. Replaceで全角スペースを削除する
全角スペースを削除するには、Replace(" ", "") を使います。
C#string text = "C# 入門 基礎";
string result = text.Replace(" ", "");
Console.WriteLine(result); // "C#入門基礎"
半角スペースと全角スペースの両方を削除したい場合は、Replace をつなげて書けます。
C#string text = " C# 入門 基礎 ";
string result = text
.Replace(" ", "")
.Replace(" ", "");
Console.WriteLine(result); // "C#入門基礎"
タブや改行も含めて削除したい場合は、さらに置換を追加します。
C#string text = "C#\t入門\r\n基礎";
string result = text
.Replace(" ", "")
.Replace(" ", "")
.Replace("\t", "")
.Replace("\r", "")
.Replace("\n", "");
Console.WriteLine(result); // "C#入門基礎"
空白文字をまとめて削除したい場合は、LINQと char.IsWhiteSpace を使う方法もあります。
C#using System.Linq;
string text = " C# 入門\t基礎\r\n";
string result = new string(text.Where(c => !char.IsWhiteSpace(c)).ToArray());
Console.WriteLine(result); // "C#入門基礎"
char.IsWhiteSpace を使うと、半角スペース、全角スペース、タブ、改行などの空白文字をまとめて判定できます。
入力値の前後だけを整えるなら Trim、文字列内の特定の空白を削除するなら Replace、あらゆる空白文字をまとめて削除するなら char.IsWhiteSpace を使うとよいでしょう。
まとめ
C#で空白を扱うときは、null、空文字、半角スペース、全角スペース、タブ、改行の違いを理解しておくことが重要です。
空白判定では、string.IsNullOrEmpty と string.IsNullOrWhiteSpace の違いを押さえておきましょう。
C#string.IsNullOrEmpty(value);
string.IsNullOrWhiteSpace(value);
IsNullOrEmpty は、null と空文字だけを判定します。
C#Console.WriteLine(string.IsNullOrEmpty(null)); // True
Console.WriteLine(string.IsNullOrEmpty("")); // True
Console.WriteLine(string.IsNullOrEmpty(" ")); // False
一方、IsNullOrWhiteSpace は、null、空文字、空白だけの文字列を判定できます。
C#Console.WriteLine(string.IsNullOrWhiteSpace(null)); // True
Console.WriteLine(string.IsNullOrWhiteSpace("")); // True
Console.WriteLine(string.IsNullOrWhiteSpace(" ")); // True
Console.WriteLine(string.IsNullOrWhiteSpace(" ")); // True
入力チェックでは、空白だけの入力を防ぐために IsNullOrWhiteSpace を使うのが基本です。
C#if (string.IsNullOrWhiteSpace(input))
{
Console.WriteLine("入力してください。");
}
文字列の前後の空白を削除するには、Trim、TrimStart、TrimEnd を使います。
C#string text = " C# 入門 ";
Console.WriteLine(text.Trim()); // "C# 入門"
Console.WriteLine(text.TrimStart()); // "C# 入門 "
Console.WriteLine(text.TrimEnd()); // " C# 入門"
文字列内の空白を削除するには、Replace を使います。
C#string text = " C# 入門 基礎 ";
string result = text
.Replace(" ", "")
.Replace(" ", "");
Console.WriteLine(result); // "C#入門基礎"
タブや改行も含めた空白文字をまとめて削除したい場合は、char.IsWhiteSpace を使う方法も便利です。
C#using System.Linq;
string text = " C# 入門\t基礎\r\n";
string result = new string(text.Where(c => !char.IsWhiteSpace(c)).ToArray());
Console.WriteLine(result); // "C#入門基礎"
C#の空白処理では、目的に応じて次のように使い分けるとよいでしょう。
| 目的 | 使用するメソッド |
|---|---|
| nullまたは空文字を判定したい | string.IsNullOrEmpty |
| 空白だけの文字列も未入力として判定したい | string.IsNullOrWhiteSpace |
| 前後の空白を削除したい | Trim |
| 先頭の空白を削除したい | TrimStart |
| 末尾の空白を削除したい | TrimEnd |
| 文字列内の半角スペースを削除したい | Replace(" ", "") |
| 文字列内の全角スペースを削除したい | Replace(" ", "") |
| すべての空白文字を削除したい | char.IsWhiteSpace |
空白処理はシンプルに見えますが、入力チェックやデータ整形では不具合の原因になりやすい部分です。
C#で文字列を扱う際は、IsNullOrWhiteSpace、Trim、Replace を適切に使い分けて、安全で読みやすいコードを書きましょう。

