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程序开发之获取汉字的首字母,希望对大家有所帮助!