Android程序开发之获取汉字的首字母
获取一个汉字的拼音首字母。GB码两个字节分别减去160,转换成10进制码组合就可以得到区位码例如汉字“你”的GB码是0xC4/0xE3,分别减去0xA0(160)就是0x24/0x430x24转成10进制就是36,0x43是67,那么它的区位码就是3667,在对照表中读音为‘n'。
<LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" tools:context=".MainActivity"> <EditText android:id="@+id/edit" android:layout_width="fill_parent" android:layout_height="wrap_content" android:hint="输入汉字"> </EditText> <Button android:id="@+id/button" android:layout_width="fill_parent" android:layout_height="wrap_content" android:text="button"> </Button> <TextView android:id="@+id/textView" android:layout_width="fill_parent" android:layout_height="wrap_content"> </TextView> </LinearLayout> publicclassMainActivityextendsActivity{ staticfinalintGB_SP_DIFF=160; //存放国标一级汉字不同读音的起始区位码 staticfinalint[]secPosValueList={1601,1637,1833,2078,2274,2302, 2433,2594,2787,3106,3212,3472,3635,3722,3730,3858,4027, 4086,4390,4558,4684,4925,5249,5600}; //存放国标一级汉字不同读音的起始区位码对应读音 staticfinalchar[]firstLetter={'a','b','c','d','e','f','g','h', 'j','k','l','m','n','o','p','q','r','s','t','w','x', 'y','z'}; privateEditTextedit; privateTextViewtext; privateButtonbutton; @Override protectedvoidonCreate(BundlesavedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); edit=(EditText)this.findViewById(R.id.edit); text=(TextView)this.findViewById(R.id.textView); button=(Button)this.findViewById(R.id.button); button.setOnClickListener(buttonListener); text.setText("拼音"); } privateView.OnClickListenerbuttonListener=newView.OnClickListener(){ @Override publicvoidonClick(Viewv){ //TODOAuto-generatedmethodstub if(v==button){ Stringcharacters=edit.getText().toString(); Stringspells=getSpells(characters); text.setText(spells); } } }; publicstaticStringgetSpells(Stringcharacters){ StringBufferbuffer=newStringBuffer(); for(inti=0;i<characters.length();i++){ charch=characters.charAt(i); if((ch>>7)==0){ //判断是否为汉字,如果左移7为为0就不是汉字,否则是汉字 }else{ charspell=getFirstLetter(ch); buffer.append(String.valueOf(spell)); } } returnbuffer.toString(); } //获取一个汉字的首字母 publicstaticCharactergetFirstLetter(charch){ byte[]uniCode=null; try{ uniCode=String.valueOf(ch).getBytes("GBK"); }catch(UnsupportedEncodingExceptione){ e.printStackTrace(); returnnull; } if(uniCode[0]<128&&uniCode[0]>0){//非汉字 returnnull; }else{ returnconvert(uniCode); } } /** *获取一个汉字的拼音首字母。GB码两个字节分别减去160,转换成10进制码组合就可以得到区位码 *例如汉字“你”的GB码是0xC4/0xE3,分别减去0xA0(160)就是0x24/0x43 *0x24转成10进制就是36,0x43是67,那么它的区位码就是3667,在对照表中读音为‘n' */ staticcharconvert(byte[]bytes){ charresult='-'; intsecPosValue=0; inti; for(i=0;i<bytes.length;i++){ bytes[i]-=GB_SP_DIFF; } secPosValue=bytes[0]*100+bytes[1]; for(i=0;i<23;i++){ if(secPosValue>=secPosValueList[i] &&secPosValue<secPosValueList[i+1]){ result=firstLetter[i]; break; } } returnresult; } }
以上所述是小编给大家介绍的Android程序开发之获取汉字的首字母,希望对大家有所帮助!