如果我有一个字符,例如:
char letter = 'g'
有没有办法让我找出这封信中字母的位置? (假设它在字母表中) 所以为了澄清,字母的答案是7,因为g是字母表中的第7个字母。
答案 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