将C#字符串值更改为按字母顺序的下一个值。

3

我想做的事情是将字母A增加到字母B。 我有一个字符串alphaCode,想让它自动增加。 我之前尝试了一种方式,给每个字母分配一个整数,然后对整数进行加1操作,但我认为肯定有更好的方法。

string alphaCode = "a"

result = "b"
4个回答

6
string GetNextCode(string alphaCode)
{
    Debug.Assert(alphaCode.Length == 1 && Regex.IsMatch(alphaCode, "[a-yA-y]"));

    var next = (char) (alphaCode[0] + 1);
    return next.ToString();
}

断言(Assert)只是为了表达意图 - 即我确实理解了你的要求。它甚至有点多余。


非常好的例子,但是如果我想从A开始走到B、C、D、E、F等地方,你会如何处理? - user222427
@Mike:它有什么问题?这个函数将以与参数相同的大小写形式给出下一个字母。请注意,“z”是根据我的断言无效的参数。 - Ivan Danilov
@recursive:然后您需要使用单独的条件过滤掉“z”字母,包括大写和小写。 - Ivan Danilov
伊万从未说过有问题,我实际上认为这做得非常好。 - user222427
@Mike 哦,你只是想让结果始终小写,而不考虑输入? var next = (char) (Char.ToLower(alphaCode[0]) + 1); - Ivan Danilov
不,我只需要继续循环直到找到特定的字符,但我可以处理它。 - user222427

3
如果您使用char类型,可以这样操作:
char alphaChar = 'a';
Console.WriteLine(alphaChar++);
Console.WriteLine(alphaChar++);
Console.WriteLine(alphaChar++);
Console.WriteLine(alphaChar++);
Console.WriteLine(alphaChar++);
Console.WriteLine(alphaChar++);
Console.WriteLine(alphaChar++);

2

好的,开始翻译:

String sample = "a";
String next = ((char)(sample[0] + 1)).ToString();

将字符串的第一个字符转换为下一个字符。


0

实现这个的最好方法是使用ASCII码,为了实现这一点,您可以将每个字符简单地转换为int类型,您可以使用以下代码:

 string st = "a";
 char c = st[0];
 int x = (int)c;
 x = x + 1;
 c = Convert.ToChar(x);

1
你不需要将字符串转换为数组才能通过索引提取其中的字符。 - recursive

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接