java產生隨機漢字

來源:互聯網
上載者:User

標籤:北京   tac   tran   imp   nes   stc   gen   根據   trace   

方法一:

public static char getRandomChar() {        return (char) (0x4e00 + (int) (Math.random() * (0x9fa5 - 0x4e00 + 1)));    }

方法二:不常見的漢字

    public static void main(String[] args) {        RandomHan han = new RandomHan();        System.out.println(han.getRandomHan());    }}class RandomHan {    private Random ran=new Random();    private final static int delta=0x9fa5-0x4e00+1;    public char getRandomHan() {        return (char) (0x4e00 + ran.nextInt(delta));    }

方法三,太麻煩

Random random = new Random();///隨機數String[] rBase = { "0", "1", "2", "3", "4", "5", "6", "7", "8","9", "a", "b", "c", "d", "e", "f" };// 產生第1位的區碼int r1 = random.nextInt(3) + 11; //產生11到14之間的隨機數String str_r1 = rBase[r1];// 產生第2位的區碼int r2;if (r1 == 13) {r2 = random.nextInt(7); //產生0到7之間的隨機數} else {r2 = random.nextInt(16); //產生0到16之間的隨機數}String str_r2 = rBase[r2];// 產生第1位的位碼int r3 = random.nextInt(6) + 10; //產生10到16之間的隨機數String str_r3 = rBase[r3];// 產生第2位的位碼int r4;if (r3 == 10) {r4 = random.nextInt(15) + 1; //產生1到16之間的隨機數} else if (r3 == 15) {r4 = random.nextInt(15); //產生0到15之間的隨機數} else {r4 = random.nextInt(16); //產生0到16之間的隨機數}String str_r4 = rBase[r4];System.out.println(str_r1 + str_r2 + str_r3 + str_r4);// 將產生機內碼轉換為漢字byte[] bytes = new byte[2];//將產生的區碼儲存到位元組數組的第1個元素中String str_r12 = str_r1 + str_r2;int tempLow = Integer.parseInt(str_r12, 16);bytes[0] = (byte) tempLow;//將產生的位碼儲存到位元組數組的第2個元素中String str_r34 = str_r3 + str_r4;int tempHigh = Integer.parseInt(str_r34, 16);bytes[1] = (byte) tempHigh;String ctmp = new String(bytes,"gb2312"); //根據位元組數組產生漢字System.out.println("產生漢字:" + ctmp); /**漢字轉拼音jpinyin下載jpinyinJPinyin是一個漢字轉拼音的Java開源類庫,在PinYin4j的功能基礎上做了一些改進。【JPinyin主要特性】1、準確、完善的字型檔;Unicode編碼從4E00-9FA5範圍及3007(〇)的20903個漢字中,JPinyin能轉換除46個異體字(異體字不存在標準拼音)之外的所有漢字;2、拼音轉換速度快;經測試,轉換Unicode編碼從4E00-9FA5範圍的20902個漢字,JPinyin耗時約100毫秒。3、多拼音格式輸出支援;JPinyin支援多種拼音輸出格式:帶音標、不帶音標、數字表示音標以及拼音首字母輸出格式;4、常見多音字識別;JPinyin支援常見多音字的識別,其中包括片語、成語、地名等;5、簡繁體中文轉換 */ 例子:import java.io.UnsupportedEncodingException;import java.util.Random;import opensource.jpinyin.ChineseHelper;import opensource.jpinyin.PinyinFormat;import opensource.jpinyin.PinyinHelper;public class TestChineseCode {  public static void main(String[] args) {  // TODO Auto-generated method stub  try {   for(int i=0;i<10;i++){    System.out.print("第:"+(i+1)+"  個字:");    CreatChineseCode();   }     } catch (UnsupportedEncodingException e) {   // TODO Auto-generated catch block   e.printStackTrace();  } }  public static void CreatChineseCode() throws UnsupportedEncodingException{  Random random = new Random();        String[] rBase = { "0", "1", "2", "3", "4", "5", "6", "7", "8",                           "9", "a", "b", "c", "d", "e", "f" };        // 產生第1位的區碼        int r1 = random.nextInt(3) + 11; //產生11到14之間的隨機數        String str_r1 = rBase[r1];        // 產生第2位的區碼        int r2;        if (r1 == 13) {            r2 = random.nextInt(7); //產生0到7之間的隨機數        } else {            r2 = random.nextInt(16); //產生0到16之間的隨機數        }        String str_r2 = rBase[r2];        // 產生第1位的位碼        int r3 = random.nextInt(6) + 10; //產生10到16之間的隨機數        String str_r3 = rBase[r3];        // 產生第2位的位碼        int r4;        if (r3 == 10) {            r4 = random.nextInt(15) + 1; //產生1到16之間的隨機數        } else if (r3 == 15) {            r4 = random.nextInt(15); //產生0到15之間的隨機數        } else {            r4 = random.nextInt(16); //產生0到16之間的隨機數        }        String str_r4 = rBase[r4];        System.out.println("區碼+位碼="+str_r1 + str_r2 + str_r3 + str_r4);               // 將產生機內碼轉換為漢字        byte[] bytes = new byte[2];        //將產生的區碼儲存到位元組數組的第1個元素中        String str_r12 = str_r1 + str_r2;        int tempLow = Integer.parseInt(str_r12, 16);        bytes[0] = (byte) tempLow;        //將產生的位碼儲存到位元組數組的第2個元素中        String str_r34 = str_r3 + str_r4;        int tempHigh = Integer.parseInt(str_r34, 16);        bytes[1] = (byte) tempHigh;        String ctmp = new String(bytes,"gb2312"); //根據位元組數組產生漢字        System.out.println("產生漢字:" + ctmp);               //String s="中國的首都是北京";        String s="";        s=ctmp;        char [] c=ctmp.toCharArray();        //帶音標   zhōng,guó,de,shǒu,dū,shì,běi,jīng        System.out.println(PinyinHelper.convertToPinyinString(s,",",PinyinFormat.WITH_TONE_MARK));     //用數字代替音標   zhong1,guo2,de5,shou3,du1,shi4,bei3,jing1     System.out.println(PinyinHelper.convertToPinyinString(s,",",PinyinFormat.WITH_TONE_NUMBER));            //不帶音標  zhong,guo,de,shou,du,shi,bei,jing             System.out.println(PinyinHelper.convertToPinyinString(s, ",", PinyinFormat.WITHOUT_TONE));                    System.out.println( PinyinHelper.getShortPinyin(s));//輸出拼音首字母  zgdsdsbj                        //System.out.println("是否是多音字:"+PinyinHelper.hasMultiPinyin(‘好‘));//判斷多音字   true           //判斷多音字   true     System.out.println("是否是多音字:"+(PinyinHelper.hasMultiPinyin(c[0])==false ? "不是":"是"));                 //System.out.println(ChineseHelper.convertToSimplifiedChinese("東"));//繁體字轉簡體字  東                     //System.out.println( ChineseHelper.convertToTraditionalChinese("東"));//簡體字轉繁體字  東        //System.out.println(ChineseHelper.isTraditionalChinese(‘哈‘));//判斷是否為繁體字   false                System.out.println("是否是繁體字:"+((ChineseHelper.isTraditionalChinese(c[0])==false) ? "不是":"是"));//判斷是否為繁體字   false }}

 

java產生隨機漢字

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.