﻿# 使用 C# 實做全形轉半形的方法

我們在做資料驗證的時候，經常有一種情況，就是使用者會用「全形」輸入 Email, 電話, 或其他英、數字的相關資料，可能是使用者不小心切換到輸入法的全形功能，導致無意識的輸入了電腦無法辨識的字元。例如說全形的 Email address 就無法被正確寄送出去。

在 .NET Framework 中有個 Microsoft.VisualBasic 命名空間，裡面有很多寶，但大多都是 VB.NET 的開發人員比較知道，寫 C# 的人很少用到這個命名空間。

其中就有個字串轉換的方法十分的好用且實用。以下是將 Microsoft.VisualBasic 命名空間套用在 ASP.NET 專案中的方法：

1. 在 Web 專案加入參考，選取 "Microsoft.VisualBasic" 組件，此動作會在 web.config 加入一個 assembly 宣告：

   <system.web>  
    <compilation debug="true">  
     <assemblies>  
      **<add assembly="Microsoft.VisualBasic, Version=8.0.0.0, Culture=neutral, PublicKeyToken=B03F5F7F11D50A3A"/>**  
     </assemblies>  
    </compilation>  
   </system.web>

  2. 在 \*.cs 中加入 using Microsoft.VisualBasic;  
    
  3. 使用 Strings.StrSonv 方法  
    
   MSDN的說明網址：[http://msdn2.microsoft.com/zh-tw/library/microsoft.visualbasic.strings.strconv(VS.80).aspx](http://msdn2.microsoft.com/zh-tw/library/microsoft.visualbasic.strings.strconv\(VS.80\).aspx)

底下這行是一段簡單的範例程式，目的是將 strOriginalEmail 字串中的所有「全形」字元全部轉成「半形」(VbStrConv.Narrow)：

```csharp
string strEmail = Strings.StrConv(strOriginalEmail, VbStrConv.Narrow, 0).ToLower().Trim();
```

相關連結：

-   深入 Microsoft.VisualBasic.Strings.StrConv 簡繁轉換  
    [http://sanchen.blogspot.com/2007/12/microsoftvisualbasicstringsstrconv.html](http://sanchen.blogspot.com/2007/12/microsoftvisualbasicstringsstrconv.html)
