需要源码请点赞关注收藏后评论区留下QQ~~~
一、中文转拼音
如果想对一串数字排序,可以比较它们的数值大小,若想对英文单词排序,可以比较它们首字母的ASCII码大小,在中文文化圈中通常有下列的排序方式
1:根据词语首个文字的笔画多少排序,比如对一群人名排序,通常按照姓氏笔画的数量从少到多
2:根据词语首个文字的拼音先后排序 把词语的第一个文字的拼音列出来,再按照拼音字母从A到Z排列,比如新华字典对收录汉字的排列
关于以上两种排列方式,在中文互联网的长期实践中更常见的是第二种依据首字拼音排序
但是计算机只知道每个中文字符的ASCII码大小,并不知晓每个中文字符的拼音是什么,为了解决从中文到拼音的转换问题,开源库Pinyin4j横空出世,它支持把一段中文转为对应的拼音字母,从而将中文的比较规则变成对拉丁字母的排序
由于Pinyin4j是第三方开源库 所以用之前要修改build.gradle 添加下列一行配置
implementation 'com.belerweb:pinyin4j:2.5.1'
接着在代码中调用转换工具PinyinHelper的toHanyuPinyinStringArray方法 即可把中文字符转换成拼音字符 因为中文普通话拥有五种声调 所以转换时还可以选择是否保留声调数字 中文声调与数字的对应关系如下
第一声 1
第二声 2
第三声 3
第四声 4
第五声 5
效果如下
点击按钮即可自动保存声调数字
代码如下
Java类
package com.example.voice; import androidx.appcompat.app.AppCompatActivity; import android.os.Bundle; import android.text.TextUtils; import android.widget.CheckBox; import android.widget.EditText; import android.widget.TextView; import android.widget.Toast; import com.example.voice.util.PinyinUtil; public class PinyinActivity extends AppCompatActivity { private final static String TAG = "PinyinActivity"; private EditText et_hanzi; // 声明一个编辑框对象 private CheckBox ck_tone; // 声明一个复选框对象 private TextView tv_pinyin; // 声明一个文本视图对象 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_pinyin); et_hanzi = findViewById(R.id.et_hanzi); ck_tone = findViewById(R.id.ck_tone); tv_pinyin = findViewById(R.id.tv_pinyin); findViewById(R.id.btn_convert).setOnClickListener(v -> showPinyin()); ck_tone.setOnCheckedChangeListener((buttonView, isChecked) -> showPinyin()); } // 显示转换后的汉字拼音 private void showPinyin() { String hanzi = et_hanzi.getText().toString(); if (TextUtils.isEmpty(hanzi)) { Toast.makeText(this, "请先输入待转换的汉字", Toast.LENGTH_SHORT).show(); return; } // 把汉字串转为拼音串 String pinyin = PinyinUtil.getHanziPinYin(hanzi, ck_tone.isChecked()); tv_pinyin.setText(pinyin); } }
XML文件
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="vertical" > <EditText android:id="@+id/et_hanzi" android:layout_width="match_parent" android:layout_height="50dp" android:layout_marginLeft="5dp" android:layout_marginTop="5dp" android:layout_marginRight="5dp" android:gravity="left|top" android:background="@drawable/editext_selector" android:textColor="@color/black" android:textSize="17sp" /> <Button android:id="@+id/btn_convert" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="开始转换" android:textColor="@color/black" android:textSize="17sp" /> <CheckBox android:id="@+id/ck_tone" android:layout_width="match_parent" android:layout_height="wrap_content" android:text="保留声调数字" android:textColor="@color/black" android:textSize="17sp" /> <TextView android:id="@+id/tv_pinyin" android:layout_width="match_parent" android:layout_height="wrap_content" android:layout_marginLeft="5dp" android:textColor="@color/black" android:textSize="17sp" /> </LinearLayout>
创作不易 觉得有帮助请点赞关注收藏~~~