oc 学习(3) 字符串方法

//

//  main.m

//  第二周第一天

//

//  Created by qianfeng on 15/12/21.

//  Copyright (c) 2015 Li Yue. All rights reserved.

//


#import <Foundation/Foundation.h>

//字符串

//Nsstring 不可变字符串

//NSMutablestring 可变字符串

#if 0

int main(int argc, const char * argv[]) {

    @autoreleasepool {

      char str1[20]="hello";

        char *str2="hello";

        NSString *str3=@"hello";//表示其为OC对象,oc字符串是一个对象,其带有行为,即自带一些处理方法;

        NSLog(@"%s %s %@",str1,str2,str3);


        //NSString内部也有字符存储的功能,同时,忽略C语言的尾0情况;

        

    }

    return 0;

}

#endif


#if 0

#include "String.h"

int main()

{

    String *string1=[[String alloc]init];

    [string1 description];

    

}

#endif

#if 0


int main()

{

    //创建字符串对象

    

    NSString *str1=[[NSString alloc]init];//不可变类字符串;init为空的不可变字符串

    //对于不可变字符串来说 init方法无什么意义

    

    

    NSLog(@"---%@",str1);

    

    

    //NSString *str2=[[NSString alloc]initWithString:@"hello"];//用传入的字符串初始化新创建的字符串,可以直接做优化 str3;

   // NSLog(@"%@",str2);//传入的字符串与输出的再内存地址上是不一样的;

    NSString *str3=@"hello";

    NSLog(@"%@",str3);

   // NSLog(@"str3=%p  str2=%p",str3,str2);//编译器优化的情况,地址情况不要去管,该操作不要做;

    char str4[]="hello";

    /*

     常用的编码方式 UTF8  ['A'  ASCII 65  一个字节 3个字节  按你的需求提供字节数

     

                    这样可以节省内存,但是不方便字符的取出;不容易解析

                unicode['A',给两个字节 0 65]固定的提供两个字节 浪费内存,但是方便提取解析;

     苹果一般存储的编码形式绝大多数是UTF8

     

     */

    NSString* str5=[[NSString alloc]initWithCString:str4 encoding:NSUTF8StringEncoding];

    NSString *str6=[[NSString alloc]initWithUTF8String:str4];

    NSString *str7 =[[NSString alloc]initWithFormat: @"hello %d",1000];  //(NSString *), ...可变参数列表

    //以指定的格式来初始化字符串

    //把很多数据全部拼到一个字符串

    //将其他类型的数据转换成为字符串类型

    

    //类方法创建对象

    

    NSLog(@"%@",str7);

    NSLog(@"%@ %@",str5,str6);

    

    

}

#endif

#if 0


int main()

{

    @autoreleasepool {

 

    NSString *str1=@"hello";//类方法创建

    

    NSString *str2=[NSString stringWithString:str1];

    NSLog(@"%@",str2);

    /*类方法创建对象写法方便,alloc出来的东西也需要释放内存,但是oc

     有自动管理机制ALC,平时写代码的时候我们是使用了alc的功能的

     用类方法创建的不需要释放内存

     

     但是,不知道其释放的时机,故只能做一个局部变量使用

     */

    

    NSString *str3=[NSString stringWithUTF8String:"hello"];

    NSString *str4=[NSString stringWithFormat:@"hello%@",str3];

        NSLog(@"%@ %@",str3,str4);

    }

    return 0;

}

#endif


#if 0

int main()

{

    

    /*

     字符串的比较

     

     */

    NSString *str1=@"ABCDE";

    NSString *str2=@"ABCDE";

    

    BOOL rec=[str1 isEqualToString:str2];

    NSLog(@"%@",rec?@"相等":@"不相等");

    

    

    NSComparisonResult result=[str1 compare:str2];

    /*比较的结果typedef NS_ENUM(NSInteger, NSComparisonResult)

    {

    NSOrderedAscending = -1L, 升序  左边<右边

     NSOrderedSame, 相等

     NSOrderedDescending 降序   左边>右边

     };

    */

    

    if(result==NSOrderedAscending)

    {

        NSLog(@"左边比右边小");

    }

    

}

#endif


#if 0

int main()

{

    /*

     

     搜索子字符串

     

     */

    

    NSString *str1=@"hello world";

    NSString *str2=@"llo";

    

    NSRange range=[str1 rangeOfString:str2];

    //NSUInteger location 位置

   // NSUInteger length; 长度

    

    NSLog(@"range.location=%ld rang.length=%ld",range.length,range.location);

    

    //判断是否出现过的两种方法,

    //1 判断length是否为0

    //2 判断 location

    //enum {NSNotFound = NSIntegerMax};这个数很大

    

    //NOTICE 返回的是第一次出现的范围,也就是只返回第一次比对成功的

    if(range.location!=NSNotFound)

    {

         NSLog(@"range.location=%ld rang.length=%ld",range.length,range.location);

    }

    //NSRange range1={5,8};

    range=[str1 rangeOfString:str2 options:NSBackwardsSearch];

    range=[str1 rangeOfString:str2 options:NSLiteralSearch];

    range=[str1 rangeOfString:str2 options:NSLiteralSearch range:/*range1*/NSMakeRange(5, 8)];//指定范围来搜索,注意搜索出来的范围针对原字符串

    

}

#endif


int main()

{

    /*

     抽取子字符串


     */

    NSString *str1=@"sai li ya";

    str1=[str1 substringFromIndex:3];//下标开始的位置开始抽取  注意:下标开始计数的位置是0

    //方法  创建新的一个字符串,然后将其指向指向新的字符串

    NSLog(@"%@",str1);

    

    str1=[str1 substringToIndex:6];

    NSLog(@"%@",str1);

    //从头开始,直至下标对对应的字符,但是不包含

    str1=[str1 substringWithRange:NSMakeRange(4, 2)];

    //前面数字为开始抽取的下标,后面数字为抽取的长度

    //指定范围内的抽取

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值