OC - 对大写数字转换成罗马数字

//将中文(如'三百二十一')转化成数字(321)

+ (NSString*)convertChineseToNumber:(NSString*)chineseString {

NSDictionary*chineseNumberDict =@{@"零":@(0),@"一":@(1),@"二":@(2),@"两":@(2),@"三":@(3),@"四":@(4),

@"五":@(5),@"六":@(6),@"七":@(7),@"八":@(8),@"九":@(9),

@"十":@(10),@"百":@(100),@"千":@(1000),@"万":@(10000),@"亿":@(100000000)};

if(chineseString.length==0) {

returnnil;

}

NSString*resultString =nil;

if(chineseString.length>0) {

longtotal =0;

intr =1;

for(inti=(int)(chineseString.length-1); i>=0; i--) {

NSString*key = [chineseStringsubstringWithRange:NSMakeRange(i,1)];

intval = [chineseNumberDict[key]intValue];

if(val >=10&&0== i) {

if(val > r) {

r = val;

total += val;

}

else{

r *= val;

}

}

elseif(val >=10) {

if(val > r) {

r = val;

}

else{

r = r * val;

}

}

else{

total = total +r * val;

}

}

resultString = [NSStringstringWithFormat:@"%ld", total];

}

returnresultString;

}

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 背景 一年多以前我在知乎上答了有关LeetCode的问题, 分享了一些自己做题目的经验。 张土汪:刷leetcod...
    土汪阅读 12,767评论 0 33
  • 1. Java基础部分 基础部分的顺序:基本语法,类相关的语法,内部类的语法,继承相关的语法,异常的语法,线程的语...
    子非鱼_t_阅读 31,740评论 18 399
  • 只要是关于亲情的影视,我几乎都会忍不住落泪。电影中哥哥利用弟弟失明而提前出狱。虽然开始时哥哥对弟弟并不好,但是哥...
    陌上花开你等我阅读 318评论 0 0
  • 初夏: 重上楼旗山 六月雪 问道他乡 去向谁...
    兴安居士阅读 162评论 0 8
  • 寻得一密友,耐三生有幸,我会一直珍惜。友情是我们个体离开家,离开亲人,步入社会最先相伴与情感交融的人,彼此成为依靠...
    纯静常乐阅读 416评论 0 1