在有些實際場景中,我們有時候需要把阿拉伯數字轉為中文數字。在中文數字裡,我們習慣說十,不說一十,習慣說十一,不說一十一,所以在**裡需要把這一口語習慣考慮進去。另外,我們習慣說一千零一 ,不說一千零零一,在**裡也需要考慮這些。具體**如下:
1.工具類
package com.mayi1203.myproject.util;
/** * 阿拉伯數字轉中文數字工具類,只考慮1到99999的轉換。
* @author 碼蟻1203
* @date 2023年4月5日
*/public
final
class
numberutils
;public
static
final string[
] chinese_number_unit =
;public
static
final string blank_string ="";
public
static
final string arabictochinese
(int number)
string source = string.
valueof
(number)
; string result = blank_string;
int length = source.
length()
;for
(int i =
0; i < length; i++
)else
if(i != length -
1&& chinesenumber !=0)
else
if(i == length -
1&& chinesenumber !=0)
else
if(i != length -
1&& chinesenumber ==0&&
!result.
substring
(len -
1, len)
.equals
(chinese_numbers[chinesenumber]))
}return result;
}}
2.測試類
2.1 測試單個數字
package com.mayi1203.myproject.util;
/** * 測試類
* @author 碼蟻1203
* @date 2023年4月5日
*/public
class
test
}
列印結果:
一
2.2 測試十
package com.mayi1203.myproject.util;
/** * 測試類
* @author 碼蟻1203
* @date 2023年4月5日
*/public
class
test
}
列印結果:
十
2.3 測試三個數字
package com.mayi1203.myproject.util;
/** * 測試類
* @author 碼蟻1203
* @date 2023年4月5日
*/public
class
test
}
列印結果:
一百零一
2.4 測試四個數字
package com.mayi1203.myproject.util;
/** * 測試類
* @author 碼蟻1203
* @date 2023年4月5日
*/public
class
test
}
列印結果:
一千零一
2.5 測試五個數字
package com.mayi1203.myproject.util;
/** * 測試類
* @author 碼蟻1203
* @date 2023年4月5日
*/public
class
test
}
列印結果:
九萬九千零九
中文數字轉阿拉伯數字
這個題與leetcode第13題羅馬數字轉換很相似 13.roman to integer 我開始想用c 處理,進行漢字 個十百千萬 與數字的對應,但是中文字元不屬於ascii碼,直接使用標準類模板裡的string會導致漢字亂碼。所以得使用寬字串wstring和寬字元wchar t 使用stl中的m...
中文數字轉阿拉伯數字
中文數字的權位是明的,阿拉伯數字的權位則隱含在數字的位置中。怎麼將文字權位轉換為數字權位,下面解析。對於十進位制阿拉伯數字,數字的所在位數就是該數字與10的倍數關係。個位就是1倍,十位就是10倍,以此類推。通過這個關係,可以將阿拉伯數字隱含的權位轉換成10的倍數表示,比如 四萬兩千五百一十二 等於 ...
阿拉伯數字轉中文數字
推薦閱讀 例如 將102轉為一百零二 將08轉為八。local chnnumchar local chnunitchar local chnunitsection local function sectiontochinese section,chinesenum local setionchine...