將字串中的中文數字轉換成阿拉伯數字
1、正則表示式的處理工具類
public class RexUtils { public static String and(String... rules) { StringBuffer sb = new StringBuffer(); for (String rule : rules) { sb.append("(").append(rule).append(")"); } return sb.toString(); } public static String or(String... rules) { StringBuffer sb = new2、使用ChineseNumberUtil呼叫方法獲取阿拉伯數字StringBuffer(); for (String rule : rules) { if (sb.length() != 0) { sb.append("|"); } sb.append("(").append(rule).append(")"); } return sb.toString(); } public static String more(String rule) { StringBuffer sb = new StringBuffer();sb.append("[").append(rule).append("]+"); return sb.toString(); } public static String nullOrMore(String rule) { StringBuffer sb = new StringBuffer(); sb.append("[").append(rule).append("]*"); return sb.toString(); } public static String getFind(String data, String rule) { Matcher m = Pattern.compile(rule).matcher(data); StringBuffer sb = new StringBuffer(); while (m.find()) { sb.append(String.valueOf(m.group())); return sb.toString(); } return ""; } }
/** * 從字串中獲取中文數字並轉換為阿拉伯數字 * Created by huomengyuan on 2017/4/14. */ public class ChineseNumberUtil { /** * @param value 需要轉換的字串 * @return */ public static long getNumbers(String value) { value = value.replace("零", ""); ChineseNumber1x chineseNumber1x = new ChineseNumber1x(value); ChineseNumber10000 chineseNumber10000 = new ChineseNumber10000(value = value.replace(chineseNumber1x.getData(), "")); ChineseNumber1000 chineseNumber1000 = new ChineseNumber1000(value = value.replace(chineseNumber10000.getData(), "")); ChineseNumber100 chineseNumber100 = new ChineseNumber100(value = value.replace(chineseNumber1000.getData(), "")); ChineseNumber10 chineseNumber10 = new ChineseNumber10(value = value.replace(chineseNumber100.getData(), "")); ChineseNumber1 chineseNumber1 = new ChineseNumber1(value.replace(chineseNumber10.getData(), "")); long number1x = chineseNumber1x.getNumber(); long number10000 = chineseNumber10000.getNumber(); long number1000 = chineseNumber1000.getNumber(); long number100 = chineseNumber100.getNumber(); long number10 = chineseNumber10.getNumber(); long number1 = chineseNumber1.getNumber(); long total = number1 + number10 + number100 + number1000 + number10000 + number1x; return total; } }3、輔助類:
1>1>1>1>1>
/** * 處理個位數 * Created by huomengyuan on 2017/4/14. */ public class ChineseNumber1 { public final static String number0 = "零"; public final static String number1 = "一|壹"; public final static String number2 = "二|兩|貳|貳"; public final static String number3 = "叄|參|三"; public final static String number4 = "肆|四"; public final static String number5 = "五|伍"; public final static String number6 = "陸|陸|六"; public final static String number7 = "柒|七"; public final static String number8 = "捌|八"; public final static String number9 = "九|玖"; private long number = 0; public ChineseNumber1() { } public ChineseNumber1(String data) { if (TextUtils.isEmpty(data)) { return; } if (!TextUtils.isEmpty(RexUtils.getFind(data, number0))) { number = 0; } else if (!TextUtils.isEmpty(RexUtils.getFind(data, number1))) { number = 1; } else if (!TextUtils.isEmpty(RexUtils.getFind(data, number2))) { number = 2; } else if (!TextUtils.isEmpty(RexUtils.getFind(data, number3))) { number = 3; } else if (!TextUtils.isEmpty(RexUtils.getFind(data, number4))) { number = 4; } else if (!TextUtils.isEmpty(RexUtils.getFind(data, number5))) { number = 5; } else if (!TextUtils.isEmpty(RexUtils.getFind(data, number6))) { number = 6; } else if (!TextUtils.isEmpty(RexUtils.getFind(data, number7))) { number = 7; } else if (!TextUtils.isEmpty(RexUtils.getFind(data, number8))) { number = 8; } else if (!TextUtils.isEmpty(RexUtils.getFind(data, number9))) { number = 9; } } public long getNumber() { return number; } }
2>2>2>
/** * 處理十位數 * Created by huomengyuan on 2017/4/14. */ public class ChineseNumber10 { public final static String number10 = "十|拾"; private final long unit = 10; private final String rex = RexUtils.and(RexUtils.nullOrMore(RexUtils.or("", ChineseNumber1.number0, ChineseNumber1.number1, ChineseNumber1.number2, ChineseNumber1.number3, ChineseNumber1.number4, ChineseNumber1.number5, ChineseNumber1.number6, ChineseNumber1.number7, ChineseNumber1.number8, ChineseNumber1.number9)), number10); private ChineseNumber1 number = new ChineseNumber1(); private String mData = ""; public ChineseNumber10(String data) { mData = RexUtils.getFind(data, rex); if (!TextUtils.isEmpty(mData)) { String numberData = String.valueOf(mData.subSequence(0, mData.length() - 1)); if (TextUtils.isEmpty(numberData)) { numberData = "一"; } number = new ChineseNumber1(numberData); } } public ChineseNumber10() { number = new ChineseNumber1(); } public long getNumber() { return number.getNumber() * unit; } public String getData() { return mData; } }3>3>3>
/** * 處理百位數 * Created by huomengyuan on 2017/4/14. */ public class ChineseNumber100 { public final static String number100 = "佰|百"; private final long unit = 100; private final String rex = RexUtils.and(RexUtils.more(RexUtils.or(ChineseNumber1.number0, ChineseNumber1.number1, ChineseNumber1.number2, ChineseNumber1.number3, ChineseNumber1.number4, ChineseNumber1.number5, ChineseNumber1.number6, ChineseNumber1.number7, ChineseNumber1.number8, ChineseNumber1.number9, ChineseNumber10.number10)), number100); private ChineseNumber1 number = new ChineseNumber1(); private String mData = ""; public ChineseNumber100(String data) { mData = RexUtils.getFind(data, rex); if (!TextUtils.isEmpty(mData)) { number = new ChineseNumber1(String.valueOf(mData.subSequence(0, mData.length() - 1))); } } public ChineseNumber100() { number = new ChineseNumber1(); } public long getNumber() { return number.getNumber() * unit; } public String getData() { return mData; } }4>4>4>
/** * 處理千位數 * Created by huomengyuan on 2017/4/14. */ public class ChineseNumber1000 { private final long unit = 1000; public final static String number1000 = "千|仟"; private final String rex = RexUtils.and(RexUtils.more(RexUtils.or(ChineseNumber1.number0, ChineseNumber1.number1, ChineseNumber1.number2, ChineseNumber1.number3, ChineseNumber1.number4, ChineseNumber1.number5, ChineseNumber1.number6, ChineseNumber1.number7, ChineseNumber1.number8, ChineseNumber1.number9, ChineseNumber10.number10, ChineseNumber100.number100)), number1000); private ChineseNumber1 number = new ChineseNumber1(); private String mData = ""; public ChineseNumber1000(String data) { mData = RexUtils.getFind(data, rex); if (!TextUtils.isEmpty(mData)) { number = new ChineseNumber1(String.valueOf(mData.subSequence(0, mData.length() - 1))); } } public ChineseNumber1000() { number = new ChineseNumber1(); } public long getNumber() { return number.getNumber() * unit; } public String getData() { return mData; } }5>5>5>
/** * 處理萬位數 * Created by huomengyuan on 2017/4/14. */ public class ChineseNumber10000 { private final long unit = 10000; public final static String number10000 = "萬|萬"; private final String rex = RexUtils.and(RexUtils.more(RexUtils.or(ChineseNumber1.number0, ChineseNumber1.number1, ChineseNumber1.number2, ChineseNumber1.number3, ChineseNumber1.number4, ChineseNumber1.number5, ChineseNumber1.number6, ChineseNumber1.number7, ChineseNumber1.number8, ChineseNumber1.number9, ChineseNumber10.number10, ChineseNumber100.number100, ChineseNumber1000.number1000)), number10000); private ChineseNumber1000 number1000 = new ChineseNumber1000(); private ChineseNumber100 number100 = new ChineseNumber100(); private ChineseNumber10 number10 = new ChineseNumber10(); private ChineseNumber1 number1 = new ChineseNumber1(); private String mData = ""; public ChineseNumber10000() { number1000 = new ChineseNumber1000(); number100 = new ChineseNumber100(); number10 = new ChineseNumber10(); number1 = new ChineseNumber1(); } public ChineseNumber10000(String data) { mData = RexUtils.getFind(data, rex); if (!TextUtils.isEmpty(mData)) { String numberData = String.valueOf(mData.subSequence(0, mData.length() - 1)); number1000 = new ChineseNumber1000(numberData); number100 = new ChineseNumber100(numberData = numberData.replace(number1000.getData(), "")); number10 = new ChineseNumber10(numberData = numberData.replace(number100.getData(), "")); number1 = new ChineseNumber1(numberData.replace(number10.getData(), "")); } } public long getNumber() { long number = number1000.getNumber() + number100.getNumber() + number10.getNumber() + number1.getNumber(); return number * unit; } public String getData() { return mData; } }6>6>6>
/** * 處理億位數 * Created by huomengyuan on 2017/4/14. */ public class ChineseNumber1x { public final static String number1x = "億|億"; private final long unit = 100000000; private final String rex = RexUtils.and(RexUtils.more(RexUtils.or(ChineseNumber1.number0, ChineseNumber1.number1, ChineseNumber1.number2, ChineseNumber1.number3, ChineseNumber1.number4, ChineseNumber1.number5, ChineseNumber1.number6, ChineseNumber1.number7, ChineseNumber1.number8, ChineseNumber1.number9, ChineseNumber10.number10, ChineseNumber100.number100, ChineseNumber1000.number1000, ChineseNumber10000.number10000)), number1x); private ChineseNumber10000 number10000 = new ChineseNumber10000(); private ChineseNumber1000 number1000 = new ChineseNumber1000(); private ChineseNumber100 number100 = new ChineseNumber100(); private ChineseNumber10 number10 = new ChineseNumber10(); private ChineseNumber1 number1 = new ChineseNumber1(); private String mData = ""; public ChineseNumber1x(String data) { mData = RexUtils.getFind(data, rex); if (!TextUtils.isEmpty(mData)) { String numberData = String.valueOf(mData.subSequence(0, mData.length() - 1)); number10000 = new ChineseNumber10000(numberData); number1000 = new ChineseNumber1000(numberData = numberData.replace(number10000.getData(), "")); number100 = new ChineseNumber100(numberData = numberData.replace(number1000.getData(), "")); number10 = new ChineseNumber10(numberData = numberData.replace(number100.getData(), "")); number1 = new ChineseNumber1(numberData.replace(number10.getData(), "")); } } public long getNumber() { long number = number10000.getNumber() + number1000.getNumber() + number100.getNumber() + number10.getNumber() + number1.getNumber(); return number * unit; } public String getData() { return mData; } }
相關推薦
將字串中的中文數字轉換成阿拉伯數字
1、正則表示式的處理工具類 public class RexUtils { public static String and(String... rules) { St
將漢字數字字符串轉換成阿拉伯數字
weight class har spa 數字 null 轉換 bold blog 1 declare 2 3 str_mid varchar2(100); 4 str_end varchar2(100); 5 begin 6 7 for j in
Python將list中的unicode轉換成中文顯示
有這樣一個列表: list = [{'channel_id': -3, 'name': u'\u7ea2\u5fc3\u5146\u8d6b'}, {u'seq_id': 0, u'name_en':
【C++】將羅馬數字轉換成阿拉伯數字
題目:Given a roman numeral, convert it to an integer. Input is guaranteed to be within the range from 1 to 3999. 將羅馬數字轉換成阿拉伯數字。 方法
java 將字串中含有unicode 轉成中文
private static String ascii2native ( String asciicode ) { String[] asciis = asciicode.split ("\\\\u"); String nativeV
將羅馬數字轉換成阿拉伯數字
// 1. 可以同時處理最簡和非最簡的羅馬數字 // 2. 不處理加橫線擴大1000倍的情況,也就是最大隻處理"M" // 3. 不作合法性檢查,如"L"不能出現在"C"前面 int Digit(char c) { if (c == 'I') {
如何將圖片中的文字轉換成Word文檔,99%的人不知道的方法!
簡單 出圖 行編輯 屬性 ocr識別 enter 簡單的 text 光學 最近很多人都在問,如果將資料保存為圖片格式後還能變成word文字麽?其實這是可以的,而且方法也是非常簡單的,下面就一起來看看是怎麽轉換的吧! 不知道大家有沒有聽說過OCR光學技術,其實這是一種識別技術
【演算法】將字串中的空格替換成指定字串
題目: 字串中的空格替換成指定字串,如%20。 給定一個字串,內部有空格,請用最少的時間複雜度、空間複雜度,將空格替換為%20 示例: 輸入: This is a test string 輸出: This%20is%20a%20test%20%string 思路: 只建立
怎樣將手機中的錄音轉換成文字
新聞 cee 語音 現在 一個 process 識別 轉換 同時 像記者、新聞采訪者、很多時候都會把訪問的內容先錄下來,然後結束後在慢慢整理,以前很多人是用錄音筆記錄,然後在一遍一遍的聽,這個解決問題的一種辦法,但是現在隨著科技的發展,已經有很多的錄音工具可以直接將錄音文件
如何將字串格式的物件轉換成真正的js物件?
1.如何將字串格式的物件轉換成真正的js物件? <script>//eval 的作用eval('var a = 100');console.log(a);</script> 2.寫法 //需要將物件格式的字串轉換成json eval("va
將redis中的json轉換成物件
JSONArray parse = (JSONArray) JSONObject.parse(ogj); List seckills = parse.toJavaList(Seckill.class); 將json轉成list物件 JSONObject.toJa
把中文表示的數字轉成阿拉伯數字
問題描述: 輸入一箇中文字串,使用中文表示的數字形式。如一百,一千萬,四千二百萬零三十。 輸出對應的數字,如100,1000000,42000030。 思路: 遇到這個問題一開始覺得挺簡單的,用一個字串和一個數組對應下標就找到數字
將字串中的字元替換成指定字元c
C 全部替換字串裡某個字元或者某個子串 /*將字串中某個字元全部替換為另一個字元*/ #include<stdio.h> #include<stdlib.h> #include<string.h> intsubstitude(ch
oracle改進之將阿拉伯數字轉換成中文數字
replace 工作 漢字 spa bsp func ace 延展 char 本博客是自己在學習和工作途中的積累與總結。 將阿拉伯數字轉換成中文漢字,方法自定義函數 create or replace function formate(val in num
將阿拉伯數字轉換成中文的php函數
ont enum pre == tin 函數 array light blog function toChinaseNum($num){ $char = array("零","一","二","三","四","五","六","七","八","九"); $dw
完成將 toChineseNum, 可以將數字轉換成中文大寫的表示,處理到萬級別,例如 toChineseNum(12345),返回 一萬二千三百四十五
turn nts math while log 處理 [0 floor rip const toChineseNum = (num) => { const unit = [‘‘, ‘十‘, ‘百‘, ‘千‘] const counts = [‘零
知識網路1.5 將字串中的小寫字母轉換成大寫
以下是本節涉及的知識點: 將字串小寫字母轉成大寫 字元陣列 從鍵盤輸入字串 char型資料的特點 庫函式 我們終於來到了這一系列boss中最後的boss了。雖然是最後一個,但卻比前面的都要簡單,因為這裡面沒有複雜的多重迴圈,沒有燒腦的找規律,有的只是簡單平和
【JavaScript】牛客程式設計:將給定數字轉換成二進位制字串。如果字串長度不足 8 位,則在前面補 0 到滿8位。
function convertToBinary(num) { var result = [] while(num != 0) { result.push(num % 2
阿拉伯數字轉換成中文大寫數字
function UpGB(InData:real):string; var a1,a2,a3,a4,a5,a6,a7:real; begin a1 := int(InData/10000); a2 := int((InData-a1*10000)/1000);
字串中漢字和數字轉換成拼音
var transliteration =require(‘transliteration’); ToPin('你好123'); 程式碼: function ToPin(str){ var array =[]; var newstr =""; for(var i