全角与半角的互相转换代码
适用于C# 8.0
基本原理:
全角空格为12288,半角空格为32
其他字符半角(33-126)与全角(65281-65374)的对应关系是:均相差65248
代码:
/// <summary>
/// 全角符号转换为半角符号
/// </summary>
/// <param name="input">字符串</param>
/// <returns></returns>
public static string ToDBC(this string input) =>
new string(input.Select(c =>
c switch
{
(char)12288 => (char)32,
_ when c > 65280 && c < 65375 => (char)(c - 65248),
_ => c
}).ToArray());
/// <summary>
/// 半角符号转换为全角符号
/// </summary>
/// <param name="input">字符串</param>
/// <returns></returns>
public static string ToSBC(this string input) =>
new string(input.Select(c =>
c switch
{
(char)32 => (char)12288,
_ when c > 32 && c < 127 => (char)(c + 65248),
_ => c
}).ToArray());