我可以通过加法增加c#字符的值吗?
本文关键字:字符 可以通过 增加 | 更新日期: 2023-09-27 18:05:26
例如,我想做如下的事情:
char output = 'A' + 1;
得到'B'的输出
但是,简单地尝试我上面所做的会给出一个类型转换错误
是的,二进制+
运算符没有在char
上定义,因此您最终将隐式转换为int
。可以使用前置/后自增操作符:
char x = 'A';
x++;
…因为++
运算符是为char
定义的。
否则,需要强制转换:
char x = 'A';
x = (char) (x + 1);
您需要自己强制转换操作,如下所示
char output = (char)('A' + 1);
正如其他人所指出的,是的,这绝对是可能的。其他的答案都给出了例子,所以我就不再重复了。然而,我想在这里给出警告:如果您所做的只是"盲目地"向字符添加数字,那么您可能会得到意想不到的结果。例如,Z + 1 = '['。如果这是你期望的结果,那很好,否则你必须处理它。也有可能添加到一个字符会导致一个不可打印的字符(例如~ + 1 = 'DEL',这是不可打印的,'DEL' + 1不再是"标准"ASCII了)。
你必须考虑以下情况:将1加到Z、Z或9的结果是什么?你能得到非字母输入或输出-例如{+ 1 (result: '|')是有效的吗?那么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;
}
尝试:
int ASCIINumber = (int)'A'; //101 A
char charResult = Convert.ToChar(ASCIINumber + 1); //102 or B