如何按字母顺序找出下一个字符直到 ZZ
How to find out next character alphabetically till ZZ
我正在使用以下代码查找下一个字母表。
string rev = "Value";
char C1 = char.Parse(rev);
c1++;
但是 rev 字符串的值不以 Z 结尾,它上升到最后一个值 AZ。 (如 excel 列仅供参考)。
因此,上面的代码不适用于 AA、AB 等值,也不会增加它。
如果我将 rev 值为“AA”,我不确定如何找到下一个值。谁能指导一下。
这是一个简单明了的方法,虽然可能有点冗长或昂贵。
它期望输入格式正确,如果它不只包含字母 A-Z,则会抛出异常。
public static string Increment(string input)
{
List<char> chars = input.ToList();
// Loop over the characters in the string, backwards
for (int i = chars.Count - 1; i >= 0; i--)
{
if (chars[i] < 'A' || chars[i] > 'Z')
{
throw new ArgumentException("Input must contain only A-Z", nameof(input));
}
// Increment this character
chars[i]++;
if (chars[i] > 'Z')
{
// Oops, we overflowed past Z. Set it back to A, and ...
chars[i] = 'A';
// ... if this is the first character in the string, add a 'A' preceeding it
if (i == 0)
{
chars.Add('A');
}
// ... otherwise we'll continue looping, and increment the next character on
// the next loop iteration
}
else
{
// If we didn't overflow, we're done. Stop looping.
break;
}
}
return string.Concat(chars);
}
测试用例:
A -> B
B -> C
Z -> AA
AA -> AB
AB -> AC
AZ -> BA
BC -> BD
ZZ -> AAA
在 dotnetfiddle 上查看。
我正在使用以下代码查找下一个字母表。
string rev = "Value";
char C1 = char.Parse(rev);
c1++;
但是 rev 字符串的值不以 Z 结尾,它上升到最后一个值 AZ。 (如 excel 列仅供参考)。 因此,上面的代码不适用于 AA、AB 等值,也不会增加它。 如果我将 rev 值为“AA”,我不确定如何找到下一个值。谁能指导一下。
这是一个简单明了的方法,虽然可能有点冗长或昂贵。
它期望输入格式正确,如果它不只包含字母 A-Z,则会抛出异常。
public static string Increment(string input)
{
List<char> chars = input.ToList();
// Loop over the characters in the string, backwards
for (int i = chars.Count - 1; i >= 0; i--)
{
if (chars[i] < 'A' || chars[i] > 'Z')
{
throw new ArgumentException("Input must contain only A-Z", nameof(input));
}
// Increment this character
chars[i]++;
if (chars[i] > 'Z')
{
// Oops, we overflowed past Z. Set it back to A, and ...
chars[i] = 'A';
// ... if this is the first character in the string, add a 'A' preceeding it
if (i == 0)
{
chars.Add('A');
}
// ... otherwise we'll continue looping, and increment the next character on
// the next loop iteration
}
else
{
// If we didn't overflow, we're done. Stop looping.
break;
}
}
return string.Concat(chars);
}
测试用例:
A -> B
B -> C
Z -> AA
AA -> AB
AB -> AC
AZ -> BA
BC -> BD
ZZ -> AAA
在 dotnetfiddle 上查看。