java如何实现拼音首字母检索汉字

java如何实现拼音首字母检索汉字,第1张

使用pinyin4j或者jpinyin的,先将汉字转换为拼音,然后记录拼音的首字母,具体的检索过程可以用循环过滤,也可以用前缀树 比如tire树

参考链接:

网页链接 java实现汉字转拼音

网页链接 tire树

用java实现输入ASCII码,打印出对应的大写字母。 char zimu = 'a'; 小写字母char m = (char)(zimu-32); 转化为大写字母注意是变数名—32;Systemoutprintln("小写字母: " + zimu);Systemoutprintln("大写字母: " + m); c语言问题输入两个小写字母,输出其ASCII码和对应的大写字母 #include <stdioh>

#include <stringh>

int main()

{

char a, b;

scanf("%c%c", &a, &b);

printf("%d %c; %d %c\n", a, toupper(a), b, toupper(b));

return 0;

}

大写字母“A”的ASCII码对应的十进位制数是65,则小写字母“c”的ASCII码是

标准的 ASCII 码 是用 000 - 127 个ASCII值 来分别代表一个字元的

通过查询ASCII表 得知

A 的 ASCII值为 65 a 的ASCII 值为 97

B 的 ASCII值为 66 b 的ASCII 值为 98

C 的 ASCII值为 67 c 的ASCII 值为 99

通过以上查询发现 大写字母 与 小写字母的 ASCII 值 加上 32

也就是说 用大写ASCII 的值 减去 32 就是该字母的小写ASCII值

8 大写字母“A”的ASCII码对应的十进位制数是65,则小写字母“c”的ASCII码是( )

c对应的十进位制数是99

标准ASCII表

Bin Dec Hex 缩写/字元 解释

0000 0000 0 00 NUL(null) 空字元

0000 0001 1 01 SOH(start of headline) 标题开始

0000 0010 2 02 STX (start of text) 正文开始

0000 0011 3 03 ETX (end of text) 正文结束

0000 0100 4 04 EOT (end of tran ission) 传输结束

0000 0101 5 05 ENQ (enquiry) 请求

0000 0110 6 06 ACK (acknowledge) 收到通知

0000 0111 7 07 BEL (bell) 响铃

0000 1000 8 08 BS (backspace) 退格

0000 1001 9 09 HT (horizontal tab) 水平制表符

0000 1010 10 0A LF (NL line feed, new line) 换行键

0000 1011 11 0B VT (vertical tab) 垂直制表符

0000 1100 12 0C FF (NP form feed, new page) 换页键

0000 1101 13 0D CR (carriage return) 回车键

0000 1110 14 0E SO (shift out) 不用切换

0000 1111 15 0F SI (shift in) 启用切换

0001 0000 16 10 DLE (data link escape) 资料链路转义

0001 0001 17 11 DC1 (device control 1) 装置控制1

0001 0010 18 12 DC2 (device control 2) 装置控制2

0001 0011 19 13 DC3 (device control 3) 装置控制3

0001 0100 20 14 DC4 (device control 4) 装置控制4

0001 0101 21 15 NAK (negative acknowledge) 拒绝接收

0001 0110 22 16 SYN (synchronous idle) 同步空闲

0001 0111 23 17 ETB (end of trans block) 传输块结束

0001 1000 24 18 CAN (cancel) 取消

0001 1001 25 19 EM (end of medium) 介质中断

0001 1010 26 1A SUB (substitute) 替补

0001 1011 27 1B ESC (escape) 换码(溢位)

0001 1100 28 1C FS (file separator) 档案分割符

0001 1101 29 1D GS (group separator) 分组符

0001 1110 30 1E RS (record separator) 记录分离符

0001 1111 31 1F US (unit separator) 单元分隔符

0010 0000 32 20 (space) 空格

0010 0001 33 21 !

0010 0010 34 22 "

0010 0011 35 23 #

0010 0100 36 24 $

0010 0101 37 25 %

0010 0110 38 26 &

0010 0111 39 27 '

0010 1000 40 28 (

0010 1001 41 29 )

0010 1010 42 2A

0010 1011 43 2B +

0010 1100 44 2C ,

0010 1101 45 2D -

0010 1110 46 2E

00101111 47 2F /

00110000 48 30 0

00110001 49 31 1

00110010 50 32 2

00110011 51 33 3

00110100 52 34 4

00110101 53 35 5

00110110 54 36 6

00110111 55 37 7

00111000 56 38 8

00111001 57 39 9

00111010 58 3A :

00111011 59 3B ;

00111100 60 3C <

00111101 61 3D =

00111110 62 3E >

00111111 63 3F

01000000 64 40 @

01000001 65 41 A

01000010 66 42 B

01000011 67 43 C

01000100 68 44 D

01000101 69 45 E

01000110 70 46 F

01000111 71 47 G

01001000 72 48 H

01001001 73 49 I

01001010 74 4A J

01001011 75 4B K

01001100 76 4C L

01001101 77 4D M

01001110 78 4E N

01001111 79 4F O

01010000 80 50 P

01010001 81 51 Q

01010010 82 52 R

01010011 83 53 S

01010100 84 54 T

01010101 85 55 U

01010110 86 56 V

01010111 87 57 W

01011000 88 58 X

01011001 89 59 Y

01011010 90 5A Z

01011011 91 5B [

01011100 92 5C \

01011101 93 5D ]

01011110 94 5E ^

01011111 95 5F _

01100000 96 60 `

01100001 97 61 a

01100010 98 62 b

01100011 99 63 c

01100100 100 64 d

01100101 101 65 e

01100110 102 66 f

01100111 103 67 g

01101000 104 68 h

01101001 105 69 i

01101010 106 6A j

01101011 107 6B k

01101100 108 6C l

01101101 109 6D m

01101110 110 6E n

01101111 111 6F o

01110000 112 70 p

01110001 113 71 q

01110010 114 72 r

01110011 115 73 s

01110100 116 74 t

01110101 117 75 u

01110110 118 76 v

01110111 119 77 w

01111000 120 78 x

01111001 121 79 y

01111010 122 7A z

01111011 123 7B {

01111100 124 7C |

01111101 125 7D }

01111110 126 7E ~

01111111 127 7F DEL (delete) 删除

大写字母A的ASCII码是65,字母b的ASCII码

大写字母B的ASCII码是66,65是大写字母A。

字母b的ASCII码是98。

在常见的计算机中,大写字母“D”对应的ASCII码是

68

已知大写字母“B”的ASCII码66,则大写字母“K”的十六进位制ASCII码为

你这么看:K的ASCII码为75,是十进位制数值。转成16进制为4B

为什么16进制为4B呢?

16进位制是逢16进一,9后面用字母A-F表示:

0 1 2 3 4 5 6 7 8 9 A B C D E F

比如:10就是A,11就是B ,。。。16 就是10,17就是11 ,18就是12。。。。。

16进位制的4B是多少呢?

转换成十进位制数值:

164 =64 B=11

64+11=75

大写字母B的ASCII码值是

42H<66D>

大写字母C的ASCII码值为67,则大写字母F的ASCII码值为 A69 B63 C70 D68

C D E F

F的ascii码值为C的+3

所以为 70

C

大写字母A的ASCII码是41H,则小写字母a的ASCII码是

大写A的ASCII码是65,16进制为41H,416+1=65,小写a则是97,转为16进位制即是61H,616+1=97

没有专门的函数,但是网上有些jar包可以直接用

另外给你个方法可以使用

测试通过

import javalang;

public class GB2Alpha {

//字母Z使用了两个标签,这里有27个值

//i, u, v都不做声母, 跟随前面的字母

private char[] chartable =

{

'啊', '芭', '擦', '搭', '蛾', '发', '噶', '哈', '哈',

'击', '喀', '垃', '妈', '拿', '哦', '啪', '期', '然',

'撒', '塌', '塌', '塌', '挖', '昔', '压', '匝', '座'

};

private char[] alphatable =

{

'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I',

'J', 'K', 'L', 'M', 'N', 'O', 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z'

};

private int[] table = new int[27];

//初始化

{

for (int i = 0; i < 27; ++i) {

table[i] = gbValue(chartable[i]);

}

}

public GB2Alpha() {

}

//主函数,输入字符,得到他的声母,

//英文字母返回对应的大写字母

//其他非简体汉字返回 '0'

public char Char2Alpha(char ch) {

if (ch >= 'a' && ch <= 'z')

return (char) (ch - 'a' + 'A');

if (ch >= 'A' && ch <= 'Z')

return ch;

int gb = gbValue(ch);

if (gb < table[0])

return '0';

int i;

for (i = 0; i < 26; ++i) {

if (match(i, gb))

break;

}

if (i >= 26)

return '0';

else

return alphatable[i];

}

//根据一个包含汉字的字符串返回一个汉字拼音首字母的字符串

public String String2Alpha(String SourceStr) {

String Result = "";

int StrLength = SourceStrlength();

int i;

try {

for (i = 0; i < StrLength; i++) {

Result += Char2Alpha(SourceStrcharAt(i));

}

} catch (Exception e) {

Result = "";

}

return Result;

}

private boolean match(int i, int gb) {

if (gb < table[i])

return false;

int j = i + 1;

//字母Z使用了两个标签

while (j < 26 && (table[j] == table[i]))

++j;

if (j == 26)

return gb <= table[j];

else

return gb < table[j];

}

//取出汉字的编码

private int gbValue(char ch) {

String str = new String();

str += ch;

try {

byte[] bytes = strgetBytes("GB2312");

if (byteslength < 2)

return 0;

return (bytes[0] << 8 & 0xff00) + (bytes[1] &

0xff);

} catch (Exception e) {

return 0;

}

}

public static void main(String[] args) {

GB2Alpha obj1 = new GB2Alpha();

Systemoutprintln(obj1String2Alpha("测试:中华人民共和国!"));

Systemoutprintln(obj1String2Alpha("裴贺先"));

return;

}

}

public class Test {

public static void main(String[] args) {

String str="";

for(int i=0;i<3;i++){//你想生成几个字符的,就把3改成几,如果改成1,那就生成一个随机字母.

str= str+(char) (Mathrandom ()26+'A');

}

Systemoutprintln(str);

}

}

Java是一门面向对象编程语言,不仅吸收了C++语言的各种优点,还摒弃了C++里难以理解的多继承、指针等概念,因此Java语言具有功能强大和简单易用两个特征。Java语言作为静态面向对象编程语言的代表,极好地实现了面向对象理论,允许程序员以优雅的思维方式进行复杂的编程 。

用文件流读取这个文件你应该会吧fiel=new Fiel(D://xxxtxt)这里是文件路径;

new FielInputStream(fiel);我简单些你看下逻辑。

都出来文件后调用subtring切割方法。将文件以下标index或者指定字符串“Jhon”等进行切割得到名字和数字,声明出来,进行对号入座打印输出。

systemoutprintln(UserName+"proficiency is"+UserNum1+"Seeks partner with proficiency"+UserNum2);

我提供一个思路,就是用ASCII码,字母在ASCII码中a-z对应的是97-122,A-Z对应是65-90,所以你可以用(char)97,这样输出的就是一个字符'a'了,以此类推,你可以用for循环,97-122,得到所有对应的字母了。

如下代码可打印大写字母表

public class English {

public void printEnglish()

{

int firstEnglish, lastEnglish;

char firstE = 'A', lastE = 'Z'; //获取首字母与末字母的值

firstEnglish = (int)firstE;

lastEnglish = (int)lastE;

Systemoutprintln("英文大写字母表: ");

for(int i = firstEnglish; i <= lastEnglish; ++i)

{

char uppercase, lowercase;

uppercase = (char)i;

lowercase = (char)(i + 32);

Systemoutprint(" " + uppercase + lowercase);

}

Systemoutprintln();

}

}

javalangString类中的一个方法

public char charAt(int index)返回指定索引处的 char 值。索引范围为从 0 到 length() - 1。序列的第一个 char 值在索引 0 处,第二个在索引 1 处,依此类推,这类似于数组索引。

例:

String str="China";

char c=strcharAt(0);

此时c的值即为str的第一个字符'C'

以上就是关于java如何实现拼音首字母检索汉字全部的内容,包括:java如何实现拼音首字母检索汉字、用java实现输入ASCII码,打印出对应的大写字母。、java有没有函数或者方法获得中文字的拼音首字母等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/9445352.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-28
下一篇 2023-04-28

发表评论

登录后才能评论

评论列表(0条)

保存