Skip to content

Instantly share code, notes, and snippets.

@twlca
Created October 15, 2016 04:11
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save twlca/4de95e913e9eaa625705754f57dd3800 to your computer and use it in GitHub Desktop.
Save twlca/4de95e913e9eaa625705754f57dd3800 to your computer and use it in GitHub Desktop.
在公文、表單標題等應用場合,有時需要將年、月、日日期註記轉記轉換成中文小寫。由於儲存在資料庫中的日期資料通常是由阿拉伯數字型式儲存(以利計算),所以在此類應用必需轉換。
var digits = '0123456789'; // 阿拉伯數字
var small_chinese_digits = '〇一二三四五六七八九'; // 中文小寫數字
var capital_chinese_digits = '零壹貮參肆伍陸㭍捌玖拾佰仟萬億兆'; // 中文大寫數字,應用侷限在金融,例如支票、匯款單、存款/提款單等
// 由阿拉伯數字轉換成小寫中文數字
var year = '106';
year.split('').map( function( item ) {
return small_chinese_digits.split('')[item];
}).join('');
// 回傳 "一〇五"
@twlca
Copy link
Author

twlca commented Oct 15, 2016

阿拉伯數字與中文小寫數字、大寫數字的轉換

在公文、表單標題等應用場合,有時需要將年、月、日日期註記轉記轉換成中文小寫。由於儲存在資料庫中的日期資料通常是由阿拉伯數字型式儲存(以利計算),所以在此類應用必需轉換。

在金融界,若使用阿拉伯數字或中文小寫數字,無法避免被竄改,所以在支票、匯票、存款/提款單等,會要求騰寫中文大寫金額。撰寫金額時仍另需加拾、佰、仟、萬、億、兆等單位,現階段較少應用於一般行政作業,擇日另文討論。

JavaScript 的 `map()' 函式

map() 是陣列 (array) 專用函數,它最大的功能是藉由程式將某一陣列經由程式運算而產生另一陣列,而該新陣列是依據原始陣列其中的元素值或者是元素在陣列中的位置,針對原始陣列中每一個元素逐個運算而形成一新的陣列。

split()join() 函式

split() 函式與 join() 函式兩者幾乎是相對的,就好像指數函數與對數函數的關係。前者是將字串中的每一個字元分離成陣列中的元素,而後者是將陣列中的元素結合成單一的字串。由於 map() 函式是針對陣列操作的,所以會需要用到這兩個函式。

split()可以接受一個字串引數,這個字串引數作為分離字元的依據。在分離時,會去除掉字元中的分離字串而不將其列入陣列元素。

join() 可以接受一個字串引數。字串引數在結合時則會插入到結合的個別元素間。

引數的用法其實不複雜,但需很多文字說明,直接看範例比較容易明瞭。

var date='80-12-31';
var trip_route = ["台北", "東京", "紐約", "倫敦", "台北"];

date.split('-');                   // return ["80", "12", "31"]                         <== 陣列
trip_route.join(" -> ");     // return "台北 -> 東京 -> 紐約 -> 倫敦 -> 台北"    <== 字串

// 但注意
var this_year="105";
this_year.split();               // return ["105"]                                          <== 直接將字串轉成含該字串的單一元素陣列
this_year.split("");            // return {"1","0","5"]                                  <== 這可能才是希望得到的結果
["1", "2", "3"].join();                  // return "1,2,3"                                    <== 彷彿自動插入 "," 結合字列
["1", "2", "3"].join("");              // return "123"                                      <== 這可能才是想要的結果

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment