[Switf]下标语法subscript简单举例

本文介绍了一种将中文数字转换为阿拉伯数字的方法,并提供了Swift及Objective-C两种语言的实现示例。通过遍历字符串中的每个字符并根据字符的含义进行相应的数值累加,实现了十万以下数字的有效转换。



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];

}




### 使用Xcode和Swift进行iOS应用开发的最佳实践 #### 选择合适的工具和技术栈 对于iOS应用程序的开发,推荐使用最新的Xcode版本以及Swift作为主要编程语言。当前最新版本的SwiftUI是在Xcode 13中引入的SwiftUI 3.0[^2]。 #### 设置开发环境 安装并配置好Xcode之后,在创建新的项目时可以选择适合的应用模板来启动开发流程。确保选择了支持所需特性的最低部署目标操作系统版本号。 #### 学习基础语法与特性 深入理解Swift的基础语法规则及其独特之处有助于编写高效且易于维护的代码。例如,利用闭包表达式简化回调函数定义;掌握泛型机制实现更灵活的数据处理逻辑等[^3]。 #### 掌握界面设计框架——SwiftUI 熟悉 SwiftUI 的声明式编程风格可以极大提高 UI 构建效率。通过组合视图组件、绑定状态变量等方式快速搭建响应式的用户交互界面。 ```swift import SwiftUI struct ContentView: View { @State private var text = "" var body: some View { VStack { TextField("Enter something", text: $text) .padding() .textFieldStyle(RoundedBorderTextFieldStyle()) Text(text.isEmpty ? "Nothing entered yet." : "You typed: \(text)") .padding(.top, 20) } .padding() } } ``` #### 实现数据持久化功能 考虑采用Core Data 或者其他第三方库如Realm 来管理本地存储需求。合理规划实体关系模型,并学会运用 Fetch Requests 查询特定条件下的记录集[^4]。 #### 集成Objective-C代码(如果必要) 当需要兼容旧版API或者重用已有的OC类库资源时,可以通过桥接头文件的方式让两者协同工作。注意遵循官方文档给出的相关指导原则以避免潜在冲突问题的发生。 #### 测试驱动开发(TDD)理念贯彻始终 编写单元测试案例验证各个业务模块的功能正确性;借助模拟器运行集成场景下整个系统的稳定性表现评估。持续迭代优化直至达到预期质量标准为止。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值