【发布时间】:2010-11-04 19:15:30
【问题描述】:
我们如何找出输入字符的下一个字符。例如,如果我输入了字符“b”,那么如何得到答案“c”?
【问题讨论】:
-
如果我输入“ñ”,答案是什么?还有“ç”?还有“1”?和 ”。”? (相关问题:输入有什么限制吗?)
-
这是我认为的“不要认为它在其他国家也一样”的事情之一。为您提供文件名预期结果的内容可能不是来自土耳其或中国的人会觉得容易阅读的内容。
我们如何找出输入字符的下一个字符。例如,如果我输入了字符“b”,那么如何得到答案“c”?
【问题讨论】:
试试这个:
char letter = 'c';
if (letter == 'z')
nextChar = 'a';
else if (letter == 'Z')
nextChar = 'A';
else
nextChar = (char)(((int)letter) + 1);
这样,当字符是字母表的最后一个时,您就不会遇到麻烦。
【讨论】:
(char)(letter + 1)
怎么样:
char first = 'c';
char nextChar = (char)((int) first + 1);
【讨论】:
请注意,char 将隐式转换为 int。这是一个简化的解决方案:
char incrementCharacter(char input)
{
return (input == 'z'? 'a': (char)(input + 1));
}
【讨论】:
也许最简单的方法是一个小函数和一个由 26 个字符组成的数组。然后,您可以决定要为“z”返回什么。
【讨论】:
将字符转换为数字,增加数字,然后再转换回来。
但考虑一下“z”或“á”(拉丁小写字母 A 和 Acute)会发生什么。
【讨论】:
只需在字符中添加 1 即可获得下一个字符。 它适用于 ASCII 值。
【讨论】:
ä 是如何排序的? 在德语中(我认为)它应该在 a 之后排序,但在瑞典语中它应该在 å 之后,而后者又在 z 之后。这不是一个微不足道的问题,除非你只限于英语。
【讨论】:
试试这个:
public string GetNextAlphabetLetter(int indice) {
return ((char)('A' + indice)).ToString();
}
【讨论】:
此更改值对于 Excel 应用程序查找上一列很有用
public static string PrevExecelColumn( string s)
{
s = s.ToUpper();
char[] ac = s.ToCharArray();
int ln = ac.Length;
for (int i = ln - 1; i > -1; i--)
{
char c = ac[i];
if (c == 'A')
{
ac[i] = 'Z';
continue;
}
ac[i] = (char)(((int)ac[i]) - 1);
break;
}
s = new string(ac);
return s;
}
【讨论】: