Chinaunix首页 | 论坛 | 博客
  • 博客访问: 9151163
  • 博文数量: 1727
  • 博客积分: 12961
  • 博客等级: 上将
  • 技术积分: 19860
  • 用 户 组: 普通用户
  • 注册时间: 2009-01-09 11:25
个人简介

偷得浮生半桶水(半日闲), 好记性不如抄下来(烂笔头). 信息爆炸的时代, 学习是一项持续的工作.

文章分类

全部博文(1727)

文章存档

2024年(3)

2023年(26)

2022年(112)

2021年(217)

2020年(157)

2019年(192)

2018年(81)

2017年(78)

2016年(70)

2015年(52)

2014年(40)

2013年(51)

2012年(85)

2011年(45)

2010年(231)

2009年(287)

分类: Android平台

2014-10-13 16:28:31

http://blog.csdn.net/jnhoodlum/article/details/7687143

 Android提供了汉字转拼音的类,这个类是在联系人app下的。具体目录是packages/providers/ContactsProvider/src/com/android/providers/contacts的HanziToPinyin.java文件。如果想要这个工具类,可以直接拷贝来用。

点击(此处)折叠或打开

  1. package nd.ray.hanzi2pinyin;

  2. import android.app.Activity;
  3. import android.os.Bundle;
  4. import android.view.Menu;
  5. import android.view.MenuItem;
  6. import android.view.View;
  7. import android.widget.Button;
  8. import android.widget.TextView;

  9. import java.text.Collator;
  10. import java.util.ArrayList;
  11. import java.util.Arrays;
  12. import java.util.Locale;
  13. import java.util.regex.Matcher;
  14. import java.util.regex.Pattern;

  15. import nd.ray.hanzi2pinyin.HanziToPinyin.Token;

  16. public class FMain extends Activity implements View.OnClickListener{

  17.     private TextView edHanzi = null;
  18.     private TextView edPinYin = null;
  19.     private TextView edPY = null;

  20.     @Override
  21.     protected void onCreate(Bundle savedInstanceState) {
  22.         super.onCreate(savedInstanceState);
  23.         setContentView(R.layout.activity_fmain);

  24.         Button btn = (Button)findViewById(R.id.btnConvert);
  25.         btn.setOnClickListener(this);

  26.         edHanzi = (TextView)findViewById(R.id.edHanzi);
  27.         edPinYin = (TextView)findViewById(R.id.edPinyin);
  28.         edPY = (TextView)findViewById(R.id.edFirstPY);


  29.         PatternStrStr();
  30.         PatternSplit();
  31.         PatternReplace();
  32.     }

  33.     private String getFullPinYin(String source) {
  34.         if (!Arrays.asList(Collator.getAvailableLocales()).contains(Locale.CHINESE)) {
  35.             return source;
  36.         }

  37.         ArrayList<HanziToPinyin.Token> tokens = HanziToPinyin.getInstance().get(source);

  38.         if (tokens == null || tokens.size() == 0) {
  39.             return source;
  40.         }

  41.         StringBuffer result = new StringBuffer();
  42.         for (HanziToPinyin.Token token : tokens) {
  43.             if (token.type == HanziToPinyin.Token.PINYIN) {
  44.                 result.append(token.target);
  45.             } else {
  46.                 result.append(token.source);
  47.             }
  48.         }

  49.         return result.toString();
  50.     }

  51.     public String getFirstPinYin(String source) {

  52.         if (!Arrays.asList(Collator.getAvailableLocales()).contains(Locale.CHINESE)) {
  53.             return source;
  54.         }

  55.         ArrayList<HanziToPinyin.Token> tokens = HanziToPinyin.getInstance().get(source);
  56.         if (tokens == null || tokens.size() == 0) {
  57.             return source;
  58.         }
  59.         StringBuffer result = new StringBuffer();
  60.         for (HanziToPinyin.Token token : tokens) {
  61.             if (token.type == HanziToPinyin.Token.PINYIN) {
  62.                 result.append(token.target.charAt(0));
  63.             } else {
  64.                 result.append("#");
  65.             }
  66.         }

  67.         return result.toString();
  68.     }

  69.         @Override
  70.     public void onClick(View v) {
  71.         if (v.getId() == R.id.btnConvert) {
  72.             String szHanzi = edHanzi.getText().toString();
  73.             String szPinYin = getFullPinYin(szHanzi);
  74.             String szPY = getFirstPinYin(szHanzi);

  75.             edPinYin.setText(szPinYin);
  76.             edPY.setText(szPY);
  77.         }
  78.     }
  79.     /*
  80.     * 正则表达式
  81.     * */

  82.     //在字符串包含
  83.     private boolean PatternStrStr()
  84.     {
  85.         Pattern pattern = Pattern.compile("正则表达式");
  86.         Matcher matcher = pattern.matcher("要检测正则表达式是否出现的源串");
  87.         return matcher.matches();
  88.     }

  89.     //分割字符串
  90.     private String[] PatternSplit()
  91.     {
  92.         Pattern pattern = Pattern.compile("[, |]+"); //正则表达式
  93.         String[] strs = pattern.split("Java Hello World Java,Hello,,World|SUN");
  94.         return strs;
  95.     }

  96.     //文字替换
  97.     private void PatternReplace()
  98.     {
  99.         Pattern pattern = Pattern.compile("要替换的内容");
  100.         Matcher matcher = pattern.matcher("包含要替换的内容的源串, 可以包含要替换的内容多次");
  101.         //String szResult = matcher.replaceFirst("要换成的新内容");
  102.         String szResult = matcher.replaceAll("要换成的新内容");

  103.         System.out.println(szResult);
  104.     }
  105. }

阅读(4380) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~