.net c#将字符串转化成全角字符函数

版权:原创 更新时间:1年以上
[该文章底部包含文件资源,可根据自己情况,决定是否下载资源使用,时间>金钱,如有需要,立即查看资源]

在许多场合下,需要使用全角字符来呈现某个文本,比如在页面或者软件中。而需要在需要使用全角字符的时候,特别注意的是,这些字符在宽度和大小上与半角字符不同,因此需要借助程序来进行转换。下面就来介绍一下如何在C#中编写一个转换函数,将普通字符转换为全角字符。

Step 1: 创建一个函数,输入参数为字符串

首先,需要创建一个函数,将要实现将给定字符串中的所有字符转换为全角字符的功能。可以为该函数指定一个名称,例如"ConvertToFullWidth",并将输入参数设置为字符串类型。代码如下:

public static string ConvertToFullWidth(string inputStr)
{
    //TO DO: 该函数将实现将输入字符串中的普通字符转化为全角,并返回转化后的字符串
}

现在已经定义了一个函数,接下来需要将输入字符串`inputStr`中的所有字符进行转换,并返回转换后的字符串。

Step 2: 实现将单个字符转换为全角字符的功能

在上一步中,已经创建了一个函数,并将输入参数指定为字符串类型。而要将所有字符转换为全角字符,显然需要逐个字符进行处理。在这里,可以使用ASCII码表来实现字符转换。

ASCII码表是一套标准的编码方式,它将每一个字符都映射为一个唯一的整数值。ASCII码表中前128个字符范围0-127,表示英文字符、数字、标点符号等;而后128个字符,则表示一些非英文字符。其中,需要特别关注的是这些非英文字符。其中,从0xA1到0xFE范围的字符,就是日文和中文所需的一些字符,也就是要转换的那些字符。

现在,来谈一谈如何将一个字符转换为该字符的全角形式。Unicode对于单个全角字符所对应的编码值,一般为该字符对应半角字符的编码+0xFEE0。因此,将单个字符存入一个char类型的变量中,然后将其编码值加上0xFEE0,就可以得到该字符的全角编码了。

可以通过以下代码实现单个字符转换为全角字符的功能:

public static string ConvertToFullWidth(string inputStr)
{
    char[] arr = inputStr.ToCharArray();
    string fullWidthStr = "";
    for (int i = 0; i < arr.Length; i++)
    {
        if (arr[i] <= 127)
        {
            fullWidthStr += ((char)(arr[i] + 0xFEE0)).ToString();
        }
        else
        {
            fullWidthStr += arr[i].ToString();
        }
    }
    return fullWidthStr;
}

在这段代码中,首先将输入的字符串转换为一个字符数组,然后逐个遍历每一个字符。当字符的编码值小于等于127时,说明该字符为英文字符,需要将其转换为对应的全角形式;若字符编码大于127,则直接将其添加进转化后的字符串中即可。

Step 3: 完善函数功能

现在,有一个可以将输入字符串中的单个字符转换为全角字符的函数了。然而,有许多情况下,需要一次性将整个字符串中的所有字符都转化成全角字符。那么,接下来就需要对该函数进行完善,以实现该功能。

现在,让将所有的字符都转化为全角字符后,再将其连接,最终返回一个完整的全角字符串。这样,就可以将该字符串插入到需要的程序中,渲染出需要的全角字符串。

下面是完整的代码实现:

using System;

namespace ConvertToFullWidth
{
    class Program
    {
        static void Main(string[] args)
        {
            string test1 = "Hello, World!";
            string test2 = "你好,世界!";
            string test3 = "こんにちは、世界!";
            Console.WriteLine("Input: {0}", test1);
            Console.WriteLine("Output: {0}", ConvertToFullWidth(test1));
            Console.WriteLine("Input: {0}", test2);
            Console.WriteLine("Output: {0}", ConvertToFullWidth(test2));
            Console.WriteLine("Input: {0}", test3);
            Console.WriteLine("Output: {0}", ConvertToFullWidth(test3));
        }

        public static string ConvertToFullWidth(string inputStr)
        {
            char[] arr = inputStr.ToCharArray();
            string fullWidthStr = "";
            for (int i = 0; i < arr.Length; i++)
            {
                if (arr[i] <= 127)
                {
                    fullWidthStr += ((char)(arr[i] + 0xFEE0)).ToString();
                }
                else
                {
                    fullWidthStr += arr[i].ToString();
                }
            }
            return fullWidthStr;
        }
    }
}

在该代码中,给定了三个测试字符串,并将这三个字符串依次传给了`ConvertToFullWidth`函数进行转换。最后,输出转换后的结果。
下面是我自己写的代码:

        /// <summary>
        /// 转全角的函数(SBC case)
        /// </summary>
        /// <param name="input"></param>
        /// <returns></returns>
        public static string ToSBC(string input)
        {
            //半角转全角:
            char[] c = input.ToCharArray();
            for (int i = 0; i < c.Length; i++)
            {
                if (c[i] == 32)
                {
                    c[i] = (char)12288;
                    continue;
                }
                if (c[i] < 127)
                    c[i] = (char)(c[i] + 65248);
            }
            return new string(c);
        }

        /// <summary>
        ///  转半角的函数(SBC case)
        /// </summary>
        /// <param name="input">输入</param>
        /// <returns></returns>
        public static string ToDBC(string input)
        {
            char[] c = input.ToCharArray();
            for (int i = 0; i < c.Length; i++)
            {
                if (c[i] == 12288)
                {
                    c[i] = (char)32;
                    continue;
                }
                if (c[i] > 65280 && c[i] < 65375)
                    c[i] = (char)(c[i] - 65248);
            }
            return new string(c);
        }

效果如下:

附件:下载该文件资源,减少时间成本(增值服务)
不商用,只限学习使用,使用后请删除
上传者拥有该资源完整版权,下载既表明已授权您可以进行报备商用,无报备或者使用后报备,视为侵权,报备后使用,为合法有效使用,报备方式,下载后,在下载列表,点击报备,填写使用场景即可
File Source
.rar
168.97 KB
文件部分展示图(单击放大)
.net c#将字符串转化成全角字符函数.net c#将字符串转化成全角字符函数
留言
该资源可下载
File Source
.rar
168.97 KB
.net c#将字符串转化成全角字符函数.net c#将字符串转化成全角字符函数
最新结算
股权转让协议意向书模板
类型: .docx 金额: CNY 2.23¥ 状态: 待结算 详细>
股权转让协议意向书模板
类型: .docx 金额: CNY 0.28¥ 状态: 待结算 详细>
CSS3图片向上3D翻转渐隐消失特效
类型: .rar 金额: CNY 0.29¥ 状态: 待结算 详细>
CSS3图片向上3D翻转渐隐消失特效
类型: .rar 金额: CNY 2.31¥ 状态: 待结算 详细>
.net c# 将金额转人名币大写金额
类型: .rar 金额: CNY 2.39¥ 状态: 待结算 详细>
.net c# 将金额转人名币大写金额
类型: .rar 金额: CNY 0.3¥ 状态: 待结算 详细>
合伙退伙协议书范本模板
类型: .doc 金额: CNY 2.23¥ 状态: 待结算 详细>
合伙退伙协议书范本模板
类型: .doc 金额: CNY 0.28¥ 状态: 待结算 详细>
合伙退伙协议书范本模板
类型: .doc 金额: CNY 2.23¥ 状态: 待结算 详细>
合伙退伙协议书范本模板
类型: .doc 金额: CNY 0.28¥ 状态: 待结算 详细>
我们力求给您提供有用的文章,再此基础上,会附加营收资源,不做任何广告,让平台可以更好发展 若您发现您的权利被侵害,或使用了您的版权,请发邮件联系 sunlifel@foxmail.com ggbig觉得 : 不提供源码的文章不是好文章
合作伙伴
联系我们
  • QQ:21499807
  • 邮箱:sunlifel@foxmail.com
  • QQ扫一扫加QQ
    QQ扫一扫
Copyright 2023-2024 ggbig.com·皖ICP备2023004211号-1
打赏文章