在字母表中查找字符的位置

时间:2015-03-05 08:33:14

标签: java char int

如果我有一个字符,例如:

 char letter = 'g'

有没有办法让我找出这封信中字母的位置? (假设它在字母表中) 所以为了澄清,字母的答案是7,因为g是字母表中的第7个字母。

6 个答案:

答案 0 :(得分:1)

首先,您可以通过简单地将该字符转换为int来获取Java中字符的ASCII int值,如下所示:

char letter = 'g';
int ascii = (int) letter; # ascii = 103

要获得字母表中从1开始的位置,您可以忽略此值,同时记住字符a的值为97:

int getPosition(char input) {
  char smalla = 'a';
  int alphabetStart = (int) smalla; # alphabetStart = 97
  int position = (int) input - alphabetStart + 1;
  return position;
}

请注意,我在解决方案中仅考虑了字母表中的小写字母。大写字符具有从65(A)到90(Z)的ASCII值,并且将这些考虑在内的解决方案会更复杂。

答案 1 :(得分:0)

ASCII table中,每个字母都有一个序号。您可以将char的序号转换为int

小写字母a的序数为97,因此您必须从字母的序号中减去它。由于ASCII表从序号0开始,因此减去1。

Java代码:

char letter = 'g';
int asciiNumber = (int)letter; // 103
final int offset = 97 - 1; // 97 is ASCII code for 'a', -1 since ASCII table starts at 0

int numberInAlphabet = asciiNumber - offset;

System.out.println("Position of letter '" + letter + "': " + numberInAlphabet);

答案 2 :(得分:0)

要处理小写和大写,您可以执行以下操作:

public int alphabetPosition(char c) {
        int a='a';
        int position=(String.valueOf(c).toLowerCase().codePointAt(0))-a+1;
        return position;
    }

答案 3 :(得分:0)

public class SearchAlphabet {

    public static void main(String args[])
    {
        char letter='d';
        int ascii=97; //ascii value of a
        int counter=1;
        for(int a=0;a<=27;a++)
        {
            if(ascii==(int)letter)
            {
                System.out.println("Position");
                System.out.println(counter);
                break;
            }
            ascii++;
            counter++;
        }


    }
}

这里,我们从1开始计数,并在匹配给定字符ascii后每次迭代时加1。在匹配with Concer字符后,我们打印计数器值。

答案 4 :(得分:0)

使用 indexOf()从abcdefg获取字符位置... string

这是一个简单的解决方案。

public static int getCharPosition(char c)
{
    String line = "abcdefghijklmnopqrstuvwxyz";

    int position = line.indexOf(String.valueOf(c).toLowerCase())+1;
    return position;
}
  

输入: z

     

输出 26

答案 5 :(得分:0)

正如评论中所述,查找字符索引的最简单方法是:

c.toLowerCase() -  'a' + 1