【问题标题】:How to find out next character alphabetically?如何按字母顺序找出下一个字符?
【发布时间】:2010-11-04 19:15:30
【问题描述】:

我们如何找出输入字符的下一个字符。例如,如果我输入了字符“b”,那么如何得到答案“c”?

【问题讨论】:

  • 如果我输入“ñ”,答案是什么?还有“ç”?还有“1”?和 ”。”? (相关问题:输入有什么限制吗?)
  • 这是我认为的“不要认为它在其他国家也一样”的事情之一。为您提供文件名预期结果的内容可能不是来自土耳其或中国的人会觉得容易阅读的内容。

标签: c# char


【解决方案1】:

试试这个:

char letter = 'c';

if (letter == 'z')
    nextChar = 'a';
else if (letter == 'Z')
    nextChar = 'A';

else
    nextChar = (char)(((int)letter) + 1);

这样,当字符是字母表的最后一个时,您就不会遇到麻烦。

【讨论】:

  • 等一下 - 将 '+ 1' 替换为 '+ 13' 你会得到...?
  • 请注意,您可以改写(char)(letter + 1)
【解决方案2】:

怎么样:

char first = 'c';
char nextChar = (char)((int) first + 1);

【讨论】:

  • 'z' 返回什么?
  • 那肯定行不通。我试图通过不添加验证代码来简化。但是看到cmets质疑,我想我不应该回答。我应该删除我的答案吗?
  • 如果第一个字符 = 'z',此代码将给出下一个字符,即 '{',因此不在字母表中。
  • 不,答案的足够变化和讨论将为提问者提供所需的思考问题的练习
  • IT 从 ascii 表 (asciitable.com) 返回下一个值。当然你也可以添加一个简单的: if (nextchar > 'z') nextChar = 'a'; (添加更多逻辑(即大写字母)也很简单)
【解决方案3】:

请注意,char 将隐式转换为 int。这是一个简化的解决方案:

char incrementCharacter(char input)
{
    return (input == 'z'? 'a': (char)(input + 1));
}

【讨论】:

    【解决方案4】:

    也许最简单的方法是一个小函数和一个由 26 个字符组成的数组。然后,您可以决定要为“z”返回什么。

    【讨论】:

      【解决方案5】:

      将字符转换为数字,增加数字,然后再转换回来。

      但考虑一下“z”或“á”(拉丁小写字母 A 和 Acute)会发生什么。

      【讨论】:

        【解决方案6】:

        只需在字符中添加 1 即可获得下一个字符。 它适用于 ASCII 值。

        【讨论】:

          【解决方案7】:

          ä 是如何排序的? 在德语中(我认为)它应该在 a 之后排序,但在瑞典语中它应该在 å 之后,而后者又在 z 之后。这不是一个微不足道的问题,除非你只限于英语。

          【讨论】:

          • 大声笑。在德国,我们以与英语相同的顺序称呼字母表。多余的字母 ü、ö 和 ä 不在任何位置。哈从来没想过这个。为什么这三个字母 O.o. 没有位置。
          【解决方案8】:

          试试这个:

          public string GetNextAlphabetLetter(int indice) {
            return ((char)('A' + indice)).ToString();
          }
          

          【讨论】:

            【解决方案9】:

            此更改值对于 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;
               }  
            

            【讨论】:

              猜你喜欢
              • 2021-07-15
              • 2014-11-26
              • 1970-01-01
              • 2012-08-26
              • 1970-01-01
              • 2021-04-06
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多