不可变字符串对象的创建及其基本操作

C语言字符串

  • 字符串必须用双引号包含
  • 字符串中的每个字符占一个字节,ASCII
  • C语言字符串的末尾有一个隐藏的’\0’
  • 打印C语言的字符串用 %s 占位符,传递字符串的首地址即可

OC字符串对象(NSString)

  • 字符串前面加上 @
  • 打印OC的字符串对象用 %@
  • OC字符串中对象中的每一个字符都是uichar字符,uichar字符符合unicode编码
  • Utf8编码存储字符串,不需要考虑字符存储
//
//  main.m
//  NSString对象基本操作
//
//  Created by weisuzhong on 2017/7/7.
//  Copyright © 2017年 weisuzhong. All rights reserved.
//

#import <Foundation/Foundation.h>

//C语言字符串
//"Hello World"
//1. C语言字符串必须用双引号包含
//2. C语言字符串中的每个字符占一个字节,ASCII
//3. C语言字符串的末尾有一个隐藏的'\0'
//4. 打印C语言的字符串用 %s 占位符,传递字符串的首地址即可

//字符串对象
//NSString
//1. 字符串前面加上 @
//2. 打印OC的字符串对象用 %@
//3. OC字符串中对象中的每一个字符都是uichar字符,uichar字符符合unicode编码
//4. Utf8编码存储字符串,不需要考虑字符存储

int main(int argc, const char * argv[]) {
    @autoreleasepool {
        char *cstring = "Hello World 中国";
        printf("%c\n",cstring[7]);
        printf("%ld\n",sizeof("Hello World"));

        //ocstring是一个对象指针,指向常量区的字符串对象
        NSString *ocstring = @"Hello World 中国";//存储在常量区中
        NSLog(@"ocstring = %@",ocstring);

        //字符串的创建——构造方法
        //用C语言的字符串构造一个OC字符串对象
        NSString *OCStr = [[NSString alloc] initWithUTF8String:"Welcome to China"];
        NSLog(@"OCStr = %@",OCStr); //NSLog默认换行

        //格式化构造OC字符串对象
        NSString *OCStr1 = [[NSString alloc] initWithFormat:@"%s##%d##%@","Hello",888,@"China"];
        NSLog(@"OCStr1 = %@",OCStr1);

        //用传递的字符串对象构造新的字符串对象
        NSString *OCStr2 = @"上海火车站";
        NSString *OCStr3 = [[NSString alloc] initWithString:OCStr2];
        NSLog(@"OCStr3 = %@",OCStr3);

        //用C语言的字符串构造OC字符串对象,该方法主要用于iOS开发
        NSString *OCStr4 = [[NSString alloc] initWithCString:"中国教育" encoding:NSUTF8StringEncoding];
        NSLog(@"OCStr4 = %@",OCStr4);

        //创建字符串对象——类方法,将C语言字符串转换成OC字符串对象
        NSString *OCStr5 = [NSString stringWithUTF8String:"Hello World!"];
        NSLog(@"OCStr5 = %@",OCStr5);

        NSString *OCStr6 = [NSString stringWithString:OCStr2];
        NSLog(@"OCStr6 = %@",OCStr6);

        NSString *OCStr7 = [NSString stringWithFormat:@"%d,%.2f,%s",125,45.69,"Hello World"];
        NSLog(@"OCStr7 = %@",OCStr7);

        //用C语言的字符串来创建OC字符串对象
        NSString *OCStr8 = [NSString stringWithCString:"I am a good boy 来自中国" encoding:NSUTF8StringEncoding];
        NSLog(@"OCStr8 = %@",OCStr8);



        //字符串其它用法
        //求字符串的长度
        NSString *str = @"welcome 中国";
        NSInteger len = [str length];
        NSLog(@"len = %li",len);



        //获取指定下标位置的字符
        unichar ch = [str characterAtIndex:3];
        NSLog(@"ch = %C",ch); //%c 打印ASCII码字符,%C 打印unicode字符



        //追加字符串
        NSString *OCStr9 = [str stringByAppendingString:@"你好"];
        //格式化追加字符串
        NSString *OCStr10 = [str stringByAppendingFormat:@"%d%s",123," World"];
        NSLog(@"OCStr10 = %@",OCStr10);



        //字符串的提取
        //从指定下标位置提取子串到字符串末尾
        NSLog(@"subString = %@" , [OCStr10 substringFromIndex:4]);
        //提取子串到指定位置,不包含指定位置字符
        NSLog(@"subString = %@" , [OCStr10 substringToIndex:4]);

        //提取指定范围的子串
        NSRange range1 = {4,6};
        NSLog(@"subString = %@" , [OCStr10 substringWithRange:range1]);
        NSLog(@"subString = %@" , [OCStr10 substringWithRange:NSMakeRange(4, 6)]);



        //字符串查找
        NSString *OCStr11 = @"bai du hello world bai du";
        //返回子串在原字符串中的范围
        NSRange range2 = [OCStr11 rangeOfString:@"we"];
        if (range2.location == NSNotFound) {
            //NSNotFound是long类型范围内的最大值
            NSLog(@"NSNotFound = %li" , NSNotFound);
        }
        else{
            NSLog(@"查找该子串,location = %lu , length = %lu" , range2.location , range2.length);
        }

        //倒序查找字符串
        NSRange range3 = [OCStr11 rangeOfString:@"du" options:NSBackwardsSearch];
        NSLog(@"查找到该子串,location = %lu , length = %lu" , range3.location , range3.length);

        //在指定范围内查找字符串
        //NSLiteralSearch:正序查找
        NSRange range4 = [OCStr11 rangeOfString:@"du" options:NSLiteralSearch range:NSMakeRange(7, 14)];
        NSLog(@"查找到该子串,location = %lu , length = %lu" , range4.location , range4.length);



        //字符串的大小写转换
        NSString *OCStr12 = @"hello World!";
        NSLog(@"str = %@" , [OCStr12 uppercaseString]);
        NSLog(@"str = %@" , [OCStr12 lowercaseString]);
        NSLog(@"str = %@" , [OCStr12 capitalizedString]); //首字母大写



        //字符串数值转换
        NSLog(@"num = %i" , [@"1234asd" intValue]); //将字符串对象转换为int类型数值
        NSLog(@"num = %li" , [@"123456789" integerValue]); //将字符串对象转换为 NSInteger 类型的值
        NSLog(@"num = %.2f" , [@"3.1456" floatValue]); //把字符串对象转换为浮点类型



        //字符串的置换
        NSString *Str = @"hello world china hello world";

        //用传入的字符串对象替换指定范围的字符串
        NSLog(@"str = %@" , [Str stringByReplacingCharactersInRange:NSMakeRange(12, 5) withString:@"welcome"]);

        //用传入的字符串替换在原字符串中出现的所有目标字符串
        NSLog(@"str = %@" , [Str stringByReplacingOccurrencesOfString:@"world" withString:@"baidu"]);

        NSLog(@"str = %@" , [Str stringByReplacingOccurrencesOfString:@"hello" withString:@"HELLO" options:NSLiteralSearch range:NSMakeRange(12, 17)]);
    }
    return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
SQLAlchemy 是一个 SQL 工具包和对象关系映射(ORM)库,用于 Python 编程语言。它提供了一个高级的 SQL 工具和对象关系映射工具,允许开发者以 Python 对象的形式操作数据库,而无需编写大量的 SQL 语句。SQLAlchemy 建立在 DBAPI 之上,支持多种数据库后端,如 SQLite, MySQL, PostgreSQL 等。 SQLAlchemy 的核心功能: 对象关系映射(ORM): SQLAlchemy 允许开发者使用 Python 来表示数据库表,使用的实例表示表中的行。 开发者可以定义之间的关系(如一对多、多对多),SQLAlchemy 会自动处理这些关系在数据库中的映射。 通过 ORM,开发者可以像操作 Python 对象一样操作数据库,这大大简化了数据库操作的复杂性。 表达式语言: SQLAlchemy 提供了一个丰富的 SQL 表达式语言,允许开发者以 Python 表达式的方式编写复杂的 SQL 查询。 表达式语言提供了对 SQL 语句的灵活控制,同时保持了代码的可读性和可维护性。 数据库引擎和连接池: SQLAlchemy 支持多种数据库后端,并且为每种后端提供了对应的数据库引擎。 它还提供了连接池管理功能,以优化数据库连接的创建使用和释放。 会话管理: SQLAlchemy 使用会话(Session)来管理对象的持久化状态。 会话提供了一个工作单元(unit of work)和身份映射(identity map)的概念,使得对象的状态管理和查询更加高效。 事件系统: SQLAlchemy 提供了一个事件系统,允许开发者在 ORM 的各个生命周期阶段插入自定义的钩子函数。 这使得开发者可以在对象加载、修改、删除等操作时执行额外的逻辑。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值