【VB.NET、C#】不要な空白を除去する

VB.NET、C#で不要な空白を除去する方法です。

いわゆるトリミングと言われるものですが、方法としては、以下の4つの方法があります。

- Trimメソッド
- TrimStartメソッド
- TrimEndメソッド
- Replaceメソッド

簡単な画面を用意して各メソッドを試してみましょう。
![20220312_000.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2162017/035c206d-21f0-1c5e-0ec7-06f21b575fcc.png)


空白が入った文字列を左側のテキストボックスに入力し、ボタンを押すと右側のテキストボックスに空白を除去した状態の文字列が表示される簡単な画面です。

# Trimメソッド
Trimメソッドは文字列の前後にある空白を除去するメソッドです。
ただし、注意が必要で、文字列の前後の空白を除去してくれますが、文字列の中にある空白は対象外となります。

```vb
'【VB.NET】
Private Sub cmdTrim_Click(sender As Object, e As EventArgs) Handles cmdTrim.Click
    txtTrimAfter.Text = txtTrimBefore.Text.Trim
End Sub
```

```c#
//【C#】
private void cmdTrim_Click(object sender, EventArgs e)
{
    txtTrimAfter.Text = txtTrimBefore.Text.Trim();
}
```
「 1 2 3 4 5 」を左側のテキストボックスに入力して実行してみます。

![20220312_001.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2162017/05e051f5-3711-7804-addc-2532f8a7861e.png)

実行すると、文字列の前後にある空白が除去されます。
![20220312_002.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2162017/5a0850f2-2c9d-9520-b5a7-ef98b1f320d2.png)


# TrimStartメソッド
Trimメソッドは文字列の前にある空白を除去するメソッドです。
先頭文字列の前に空白があれば除去してくれます。
※VB.NETの場合、LTrimメソッドでも同じことが可能です。

```vb
'【VB.NET】
Private Sub cmdTrimStart_Click(sender As Object, e As EventArgs) Handles cmdTrimStart.Click
    txtTrimStartAfter.Text = txtTrimStartBefore.Text.TrimStart
End Sub
```

```c#
//【C#】
private void cmdTrimStart_Click(object sender, EventArgs e)
{
    txtTrimStartAfter.Text = txtTrimStartBefore.Text.TrimStart();
}
```

「 1 2 3 4 5 」を左側のテキストボックスに入力して実行してみます。

![20220312_003.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2162017/ad124a8d-bf5f-2ff0-2fbf-8e71ed0a4377.png)

実行すると、文字列の前にある空白が除去されます。
![20220312_004.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2162017/c127d7fd-1756-26d0-c4b7-2a730a2a8996.png)

# TrimEndメソッド
Trimメソッドは文字列の後ろにある空白を除去するメソッドです。
文字列の末尾の後ろに空白があれば除去してくれます。
※VB.NETの場合、RTrimメソッドでも同じことが可能です。

```vb
'【VB.NET】
Private Sub cmdTrimEnd_Click(sender As Object, e As EventArgs) Handles cmdTrimEnd.Click
    txtTrimEndAfter.Text = txtTrimEndBefore.Text.TrimEnd
End Sub
```

```c#
//【C#】
private void cmdTrimEnd_Click(object sender, EventArgs e)
{
    txtTrimEndAfter.Text = txtTrimEndBefore.Text.TrimEnd();
}
```

「 1 2 3 4 5 」を左側のテキストボックスに入力して実行してみます。
![20220312_005.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2162017/31a02145-5a2f-85e3-18c3-72a8b7b06927.png)

実行すると、文字列の後ろにある空白が除去されます。
![20220312_006.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2162017/2e0fb789-8115-21e6-ebd8-9853afeb6916.png)

# Replaceメソッド
Replaceメソッドを用いても空白を除去してくれます。
ただし、Replaceメソッドは1文字しか指定できないため、半角スペース・全角スペースを全て除去したい場合は、次の様に記述する必要があります。

```vb
'【VB.NET】
Private Sub cmdReplace_Click(sender As Object, e As EventArgs) Handles cmdReplace.Click
    txtReplaceAfter.Text = System.Text.RegularExpressions.Regex.Replace(txtReplaceBefore.Text, "\s", "")
End Sub
```

```c#
//【C#】
private void cmdReplace_Click(object sender, EventArgs e)
{
    txtReplaceAfter.Text = System.Text.RegularExpressions.Regex.Replace(txtReplaceBefore.Text, @"\s", "");
}
```

では、半角・全角が混じった文字列を左側のテキストボックスに入力して実行してみます。
![20220312_007.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2162017/add1abf9-5bc4-78ee-fa24-8798f3814910.png)

実行すると、文字列の中にある空白も除去されます。
![20220312_008.png](https://qiita-image-store.s3.ap-northeast-1.amazonaws.com/0/2162017/a05d435c-1c47-97ab-89b6-5ffa750d12ed.png)


# 参考

https://docs.microsoft.com/ja-jp/dotnet/api/system.string.trim?view=net-6.0

https://docs.microsoft.com/ja-jp/dotnet/api/system.string.trimstart?view=net-6.0

https://docs.microsoft.com/ja-jp/dotnet/api/system.string.trimend?view=net-6.0

https://docs.microsoft.com/ja-jp/dotnet/api/system.string.replace?view=net-6.0