我可以通过添加来增加c#字符的值吗?

时间:2016-09-01 17:10:23

标签: c#

例如,我想做类似以下的事情:

char output = 'A' + 1;

获得'B'的输出

然而,只是尝试上面的内容就会出现投射错误。

4 个答案:

答案 0 :(得分:14)

是的,+未定义二进制char运算符,因此您最终会隐式转换为int。您可以使用前/后增量运算符:

char x = 'A';
x++;

...因为为++定义了char运算符

但除此之外,你需要演员:

char x = 'A';
x = (char) (x + 1);

答案 1 :(得分:5)

您需要自己投射操作,如此

QDate date = QDate::fromString("1MM12car2003", "d'MM'MMcaryyyy");
// date is 1 December 2003

答案 2 :(得分:2)

正如其他人所说,是的,这绝对是可能的。其他答案给出了例子,所以我不会重复它们。但是,我想在此提出警告:如果你所做的只是"盲目地"在角色中添加一个数字,可能会得到意想不到的结果。例如,Z + 1 =' ['。如果那是你期望的结果,那就太好了 - 否则你必须处理它。还有可能添加到字符将导致不可打印的字符(例如〜+ 1 =' DEL',这是不可打印的,并且' DEL' ; + 1不是" t"标准" ASCII了。

您必须考虑以下情况:在Z,Z或9中添加1的结果是什么?你能得到非字母输入或输出 - 例如将{+ 1(结果:' |')有效?那么Z + 1 =' ['?你在ASCII 127(最后一个有效的ASCII字符)做什么?那些不可打印的角色呢?

例如,如果您希望输入只是字母和数字,并且您希望结果能够包含"环绕"在有效范围的末尾(例如Z + 1 = A,z + 1 = a,9 + 1 = 0),您可以执行以下操作:

char bChar = 'A'; // Or whatever you want, obviously
switch (bChar)
        {
            case 'z':
                bChar = 'a';
                break;
            case 'Z':
                bChar = 'A';
                break;
            case '9':
                bChar = '0';
                break;
            default:
                bChar++;
                break;
        }

最重要的是要决定这些"边缘情况会发生什么?#34;并确保妥善处理它们。

答案 3 :(得分:0)

尝试:

int ASCIINumber = (int)'A'; //101 A
char charResult = Convert.ToChar(ASCIINumber + 1);  //102 or B