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