1. 程式人生 > >iOS數字金額轉化為大寫漢字(阿拉巴數字轉化為漢字)

iOS數字金額轉化為大寫漢字(阿拉巴數字轉化為漢字)

本博文想要解決的問題,是將一串阿拉伯數字(包含小數點)轉化為對應的大寫漢字。
實現思路如下:
1.將這串阿拉伯數字格式化,只取小數點後兩位;
2.將字串分割為整數部分的子串和小數部分的子串;
3.遍歷整數部分並拼接大寫漢字字串;
4.遍歷小數部分並拼接大寫漢字字串(需處理只有小數的情況)。

/*
例如 100 轉化為 一百元整
*/
+ (NSString *)convertAmount:(NSString *)amountString
{
    if (!amountString || ([amountString doubleValue] == [@"0.00" doubleValue]))
    {
        return
@"零元整"; } //首先轉化成標準格式 “200.23” NSString *doubleStr = nil; doubleStr = [NSString stringWithFormat:@"%.2f",[amountString doubleValue]]; NSMutableString *tempStr= nil; tempStr = [[NSMutableString alloc] initWithString:doubleStr]; //位 NSArray *[email protected][@"元"
, @"拾", @"佰", @"仟", @"萬", @"拾", @"佰", @"仟", @"億", @"拾", @"佰", @"仟", @"兆", @"拾", @"佰", @"仟" ,@"京",@"十京",@"百京",@"千京垓",@"十垓",@"百垓",@"千垓秭",@"十秭",@"百秭",@"千秭穰",@"十穰",@"百穰",@"千穰"]; NSArray *[email protected][@"分",@"角"]; //數字 NSArray *[email protected][@"零", @"壹", @"貳", @"叄", @"肆", @"伍", @"陸"
, @"柒", @"捌", @"玖"]; NSArray *temarr = [tempStr componentsSeparatedByString:@"."]; //小數點前的數值字串 NSString *firstStr=[NSString stringWithFormat:@"%@",temarr[0]]; //小數點後的數值字串 NSString *secondStr=[NSString stringWithFormat:@"%@",temarr[1]]; //是否拼接了“零”,做標記 bool zero=NO; //拼接資料的可變字串 NSMutableString *endStr= [[NSMutableString alloc] init]; /** * 首先遍歷firstStr,從最高位往個位遍歷 高位----->個位 */ for(int i=(int)firstStr.length;i>0;i--) { //取最高位數 NSInteger MyData=[[firstStr substringWithRange:NSMakeRange(firstStr.length-i, 1)] integerValue]; if ([numArr[MyData] isEqualToString:@"零"]) { if ([carryArr1[i-1] isEqualToString:@"萬"]||[carryArr1[i-1] isEqualToString:@"億"]||[carryArr1[i-1] isEqualToString:@"元"]||[carryArr1[i-1] isEqualToString:@"兆"]) { //去除有“零萬” if (zero) { endStr =[NSMutableString stringWithFormat:@"%@",[endStr substringToIndex:(endStr.length-1)]]; [endStr appendString:carryArr1[i-1]]; zero=NO; } else { [endStr appendString:carryArr1[i-1]]; zero=NO; } //去除有“億萬”、"兆萬"的情況 if ([carryArr1[i-1] isEqualToString:@"萬"]) { if ([[endStr substringWithRange:NSMakeRange(endStr.length-2, 1)] isEqualToString:@"億"]) { endStr =[NSMutableString stringWithFormat:@"%@",[endStr substringToIndex:endStr.length-1]]; } if ([[endStr substringWithRange:NSMakeRange(endStr.length-2, 1)] isEqualToString:@"兆"]) { endStr =[NSMutableString stringWithFormat:@"%@",[endStr substringToIndex:endStr.length-1]]; } } //去除“兆億” if ([carryArr1[i-1] isEqualToString:@"億"]) { if ([[endStr substringWithRange:NSMakeRange(endStr.length-2, 1)] isEqualToString:@"兆"]) { endStr =[NSMutableString stringWithFormat:@"%@",[endStr substringToIndex:endStr.length-1]]; } } }else{ if (!zero) { [endStr appendString:numArr[MyData]]; zero=YES; } } }else{ //拼接數字 [endStr appendString:numArr[MyData]]; //拼接位 [endStr appendString:carryArr1[i-1]]; //不為“零” zero=NO; } } /** * 再遍歷secondStr 角位----->分位 */ if ([secondStr isEqualToString:@"00"]) { [endStr appendString:@"整"]; }else{ //如果最後一位位0就把它去掉 if (secondStr.length > 1 && [secondStr hasSuffix:@"0"]) { secondStr = [secondStr substringToIndex:(secondStr.length - 1)]; } for(int i=(int)secondStr.length;i>0;i--) { //取最高位數 NSInteger MyData=[[secondStr substringWithRange:NSMakeRange(secondStr.length-i, 1)] integerValue]; [endStr appendString:numArr[MyData]]; [endStr appendString:carryArr2[i-1]]; } } //add song if ([endStr hasPrefix:@"元"]) { return (NSString *)[endStr substringFromIndex:1]; } return endStr; }

相關推薦

iOS數字金額轉化大寫漢字阿拉數字轉化漢字

本博文想要解決的問題,是將一串阿拉伯數字(包含小數點)轉化為對應的大寫漢字。 實現思路如下: 1.將這串阿拉伯數字格式化,只取小數點後兩位; 2.將字串分割為整數部分的子串和小數部分的子串; 3.遍歷整數部分並拼接大寫漢字字串; 4.遍歷小數部分並拼接大寫漢字字

阿拉數字轉化中文大寫

//阿拉伯數字轉換為簡寫漢字 function Arabia_To_SimplifiedChinese(Num) { for (let i = Num.length - 1; i >= 0; i--) { Num = Num.replace(",", ""); //替

(轉)php數字金額轉中文大寫金額

func 字符串 獲取字符串長度 依次 reac 字符串長度 單位 ever -- function floatohz($value){ $result=‘‘; $v_a=array(‘分‘,‘角‘,‘零‘,‘塊‘,‘十‘,‘,百‘,‘千‘,‘萬‘,‘十‘

java實現數字金額轉換中文大寫金額

直接貼程式碼吧! public class CnNumberUtils { private final static Logger logger = LoggerFactory.getLogger(CnNumberUtils.class);

Java中實現數字金額到中文大寫字元的轉換!!

最近用到了數值轉成大寫人民幣的功能,在網上找了一下只有C++版的,好容易找到一個java版的竟然收費!!沒辦法就自己弄一個出來,想必用到該功能的人肯定少,就拿出來與大家共享!! /**  * <p>Title: money</p>  * <p&g

javascript實現將數字金額變成中文大寫金額

/*     功能:將貨幣數字(阿拉伯數字)(小寫)轉化成中文(大寫)      引數:Num為字元型,小數點之後保留兩位,例:Arabia_to_Chinese("1234.06")     說明:1.目前本轉換僅支援到 拾億(元) 位,金額單位為元,不能為萬元,最小單位為

阿拉伯數字金額轉中文大寫 (python實現)

分析 分小數和整數部分進行處理 末尾的零應捨棄 中間有連續多個零,只取一個零 整數部分從右往左以4位為步長掃描 實現 # -*- coding: utf-8 -*- from __future

第一章,前言-數字圖像處理自學筆記Rafael C.Gonzalez,英文第二版

different ges 包含 系統 標簽 之一 tro with proc 什麽是數字圖像處理?   數字圖像:坐標對應,幅值有限且離散   數字圖像處理:利用數字計算機,對數字圖像進行處理。   初級數字圖像處理:輸入為圖片,輸出也為圖片,如銳化、增強對比度、去噪等。

LeetCode 114. 二叉樹展開鏈表Flatten Binary Tree to Linked List

tree binary ont 基本思想 oot public ike 返回 上一個 題目描述 給定一個二叉樹,原地將它展開為鏈表。 例如,給定二叉樹 1 / 2 5 / \ 3 4 6 將其展開為: 1 2 3

下劃線命名轉換駝峰命名根據介面名查詢介面檔名

見到一段程式碼實現的功能是:通過介面名驗證介面檔案是否存在。 舉個例子:介面名為:aa_bb_cc 介面檔名為 AbcAaBbCc.php 取這段程式碼稍作改造: <?php class FindFilename { /** $prefix 檔案字首 $Interfa

JavaMail儲存草稿郵件只適合imap不適合pop3

               JavaMail儲存為草稿郵件(只適合imap不適合pop3)   轉載:https://blog.csdn.net/u013183865/article/details/

iOS--上線被拒如何從蘋果返回的崩潰日誌iOS.crash檔案處理找崩點看這篇就懂了

2017年底了,現在蘋果上線的越來越嚴,導致被拒的次數也是越來越特多。我們從蘋果給的提示可以看出我們大概崩潰的位置,但是作為程式設計師的我們,找到具體崩潰的點才能更好的修復。 AppStore稽核沒有通過,給了3個crashLog.txt檔案,可是開啟後都是十六進位制的東東(根本不知道

牛客網——華機試題2:計算字元個數Java

題目描述: 寫出一個程式,接受一個由字母和數字組成的字串,和一個字元,然後輸出輸入字串中含有該字元的個數。不區分大小寫。 輸入描述: 輸入一個有字母和數字以及空格組成的字串,和一個字元。 輸出描述: 輸出輸入字串中含有該字元的個數。 示例1: 輸入: ABCD

IOS viewDidLoad方法被執行兩次viewDidLoad和loadView方法詳解

為了搞清楚viewDidLoad、loadView等方法的用途和呼叫順序,寫了一個小demo,不料viewDidLoad方法被執行了兩次,模擬器也一直是黑屏。查看了這兩個方法的官方解釋後找到了錯誤原因和解決方法。 首先來看UIViewController.h檔

iOS開發 跳轉到指定介面棧中不存在的介面

獲取到導航欄裡的所有控制器: NSMutableArray *viewControllers = [self.navigationController.viewControllers mutableC

iOS-實現UIScrollview的無限迴圈滑動轉載自Kenshin Cui's Blog不過感覺快速滑動還是有缺陷啊

UIScrollView實戰 前面介紹了iOS中UIKit的一些簡單知識,這裡我們一起利用前面的知識做一個例子--圖片無限迴圈滾動。在這個例子中我們需要解決如下兩個問題: 如何無限迴圈? 我們知道在UIScrollView中如果放置其他控制元件後,只要設定conte

Opencv透視變換——實現不規則四邊形轉換規則矩形以答題卡校正

最近在做答題卡識別方面的工作,但是掃描的答題卡試卷可能會存在一定程度的傾斜,而我們需要提取答題卡有效區域並對其進行校正,實現後續的工作。 傾斜答題卡如下圖所示: 我們需要對其進行校正:思路如下 霍夫圓檢測 提取圓心所形成的外包矩形 利用四個圓心與矩形

機試2018年5月3日

第一題 :                                C++程式:#include<iostream> #include<string> using namespace std; void main() { string str,

如何將tensorflow1.x程式碼改寫pytorch程式碼以圖注意力網路(GAT)

之前講解了圖注意力網路的官方tensorflow版的實現,由於自己更瞭解pytorch,所以打算將其改寫為pytorch版本的。 對於圖注意力網路還不瞭解的可以先去看看tensorflow版本的程式碼,之前講解的地址: 非稀疏矩陣版:https://www.cnblogs.com/xiximayou/p/13

數字人民幣RMB轉化大寫漢字表達

ret 表達 convert uri == 數組 += format global using System.Text; /// <summary>/// ToChineseValue 的摘要說明/// 人民幣(RMB)轉化為大寫字母 /// </s