优化代码以增加字符值

本文关键字:字符 增加 代码 优化 | 更新日期: 2023-09-27 18:01:27

下面是我的c#代码来增加ascii值13

int a = Convert.ToInt32('z');
            for (int i = 0; i < 13; i++)
            {
                if (a > 96 && a < 122)
                {
                    a++;
                }
                else
                {
                    a = 97;
                }
            }
            string c = Convert.ToChar(a).ToString();

输出m也就是z+13任何避免for循环的方法

基本上我正在尝试实现ROT-13

优化代码以增加字符值

初始答案

你当然可以直接用a += 13;,也就是现在的for循环。

但这可以进一步缩短。

char c = 'a';
if (c >= 'a' && c <= 'z') {
    c = (char)(((int)c)+13);
}

更新

对于你更新的问题,我认为你可以这样做:

char c = 'z';
c = (char)(((int)'a') + ((c - (int)'a' + 13) % 26));
// Output c = 'm'
// If you use c = 'a', then the output is c = 'n'

实际上你可以去掉对int的强制转换,还有一些括号。这就剩下了下面的内容,这可能会更清楚一些。

char c = 'z';
c = (char)('a' + (c - 'a' + 13) % 26);
// Output c = 'm'
// If you use c = 'a', then the output is c = 'n'

如何:

a += 13;

现在,如果这个加法后的数字太大,你应该能够减去26"换行"

不需要for循环-您可以简单地将13添加到int值:

a = a + 13;

a += 13;

你不需要这个for循环:

int a = Convert.ToInt32('z');
            if (a > 96 && a < 122)
            {
                a+=13;
            }
            else
            {
                a = 97;
            }
        string c = Convert.ToChar(a).ToString();

我想这样可以:

int a = Convert.ToInt32('z');
a = (a >= 97 && a <= 122) ?
        (a > 109) ?
            a -= 13 : a += 13 : (a >= 65 && a <= 90) ?
                (a > 77) ?
                    a -= 13 : a += 13 : a;
string c = Convert.ToChar(a).ToString();

它基本上是c#的ROT13方法对单个字符,但在一个更短(和更不容易读)的形式