import Foundation
extension String{
subscript( charIndex:Int ) ->String{
let string = (selfasNSString).substringWithRange(NSMakeRange(charIndex,1))
return string
}
}
//十万以下的数
func getYourNumber(string:String) ->Int {
var sum:Int =0
var short:Int =1
//遍历char
for var i =0 ; i <count(string) ;i++ {
switch string[i] {
case"一" : short =1
case"二" : short =2
case"三" : short =3
case"四" : short =4
case"五" : short =5
case"六" : short =6
case"七" : short =7
case"八" : short =8
case"九" : short =9
case"十" : sum += short *10
case"百" : sum += short *100
case"千" : sum += short *1000
case"万" : sum += short *10000 //如果需求大于10w,在此处判断sum的值>10,则sum*1w
default:
break//`零`不考虑
}
//判断最后一位
if i ==count(string) -1{
switch string[count(string)-1] {
case"十" ,"百" ,"千" ,"万":break
default:
sum += short
}
}
}
return sum
}
println(getYourNumber("十一"))
println(getYourNumber("一千零二十"))
println(getYourNumber("三千零一"))
println(getYourNumber("九千九百九十九"))
println(getYourNumber("三千零一十一"))
打印得到
11
1020
3001
9999
3011
类似的,OC实现
int main(int argc, const char * argv[]) {
test(@"零");
test(@"十一");
test(@"一千零二十");
test(@"三千零一");
test(@"九千九百九十九");
test(@"三千零一十一");
return 0;
}
NSString* test( NSString *yourString ){
NSArray *numberArray = @[@"零",@"一", @"二", @"三", @"四", @"五", @"六", @"七", @"八", @"九"];
NSArray *elseNumber = @[@"十",@"百",@"千",@"万"];
NSInteger sum = 0 ;
NSInteger shortSum = 1 ;
for( int i = 0 ; i < yourString.length ;i++){
NSString *str = [yourString substringWithRange:NSMakeRange(i, 1)];
if ([numberArray containsObject:str]) {
NSUInteger index = [numberArray indexOfObject:str];
shortSum = index ;
}
if ([elseNumber containsObject:str]) { //十百千万 10^3 = pow(10, 3)
NSUInteger otherIndex = [elseNumber indexOfObject:str];
sum += (NSInteger)pow(10, otherIndex + 1) * shortSum ;
}
//判断末尾的数
if (i == yourString.length - 1 && [numberArray containsObject:str]) { sum += shortSum ;
}
}
NSLog(@"%ld",sum);
return [NSString stringWithFormat:@"%ld",sum];
}