2016-05-11 84 views

回答

1

它给出了字符(ASCII)表中相对于a字符的位置。如果输入字符是小写字母,这也是字母表中的位置(基于零索引)。

实施例:

'Z' - 'a'给你90 - 97 = -7

'b' - 'a'给你98 - 97 = 1

1

'A' 在ASCII表是97, 'B' - 'A' 将相当于98 - 97 ,产生1,这是b在字母阵列中的位置(a是0)

0

其他答案在理论上是正确的,但对ASCII的引用只是错误的。

在Java中,charAt返回一个Unicode/UTF-16代码单元。 UTF-16以一个代码单元编码一些Unicode码点;一些在二。如果您的数据处于UTF-16以一个代码单元编码的代码点范围内,那么减法就是这些代码点之间的“距离”。如果码点处于有一些“有意义”顺序的范围内,那么距离是有意义的。

例如,Basic Latin小写字母按英文字母顺序排列,UTF-16将其编码为一个代码单元。距离将沿着“字母表行”而不是“数字行”。这适用于英文和其他一些字母,但不适用于其他许多字母。另外,从'a'的减法将'a'映射到0,'b'映射到1,'z'映射到25,...。 'z'后面是什么?那么,也许你不应该将这些代码应用于这些数据。事实上,即使您的文本只是小写的英文单词,该算法也无法处理英文单词“naïve”或“resumé”。

顺便说一句,从许多几十种语言所使用的数十种书写系统(脚本)中,大约有120,000个“字母”,每种语言都有一些学习机构指定为字母表。

+0

“明显错误”? ASCII是unicode的一个子集。 – Adrian

+0

@adjan只有Unicode具有ASCII所具有的所有字符。在使用文本时,文本只能以一种编码存在,在这种情况下,ASCII不是。 'charAt'的用户应该明白它可以返回哪些值及其含义。 –

相关问题