Object C学习笔记7-字符串NSString之一

  在Object C中存在两个类用于操作字符串,NSString和NSMutableString;NSString在赋值之后不能修改其内容和长度,而NSMutableString可以动态的修改字符串内容和长度,其主要区别就和.NET 中的string与StringBuilder之间的区别。

  1. 定义NSString字符串

    在Object C中NSString是一个对象类型,其有多种定义方式:

NSString *str1=@"令狐聪";

        NSString *str2=[NSString stringWithFormat:@"名称: %@ 性别:%s 年龄: %d \n",str1,"男",25];

        NSString *str3=[NSString stringWithFormat:@"我的姓名是 令狐聪"];

        NSString *str4=[NSString stringWithUTF8String:"我是任盈盈"];

        NSString *str5=[str4 stringByAppendingString:str3];

        NSString *str6=[str4 stringByAppendingFormat:@" %@",@"笑傲江湖abc"];

        NSLog(@"str1=%@",str1);
        NSLog(@"str2=%@",str2);
        NSLog(@"str3=%@",str3);
        NSLog(@"str4=%@",str4);
        NSLog(@"str5=%@",str5);
        NSLog(@"str6=%@",str6);

NSString字符串的定义

    因为NSString是对象类型,所以在定义的时候要使用 NSString *name 方式,而值需要使用 @+value方式,如@"NSString中文";

    也可以使用stringWithFormat全局方法,stringWithUTF8String,stringByAppendingString,stringByAppendingFormat等方法来定义,看到Format我们可以想到.NET中的Format()方法,用于格式化字符串。以上几个方法具体效果如下:

2014-02-13 20:53:13.247 ObjectC10[460:303] str1=令狐聪
2014-02-13 20:53:13.249 ObjectC10[460:303] str2=名称: 令狐聪 性别: 年龄: 25
2014-02-13 20:53:13.251 ObjectC10[460:303] str3=我的姓名是 令狐聪
2014-02-13 20:53:13.252 ObjectC10[460:303] str4=我是任盈盈
2014-02-13 20:53:13.252 ObjectC10[460:303] str5=我是任盈盈我的姓名是 令狐聪
2014-02-13 20:53:13.253 ObjectC10[460:303] str6=我是任盈盈 笑傲江湖abc

 

  2.遍历字符串中的字符

    使用- (NSUInteger)length; 方法可以获得字符串的长度,这里要注意中文和英文的问题,在C中char表示一个字节,而一个中文字符占用两个字节位。

可以获得。

int count=[str6 length];
        NSLog(@"字符串长度:%d",count);
        for(int i=0;i<count;i++){
            NSString *abc=[str6 substringWithRange:NSMakeRange(i,1)];
            NSLog(@"%@",abc);
        }

        for(int i=0;i<count;i++){
            unichar c=[str6 characterAtIndex:i];
            NSLog(@"中文情况=%c",c);
        }

        for(int i=0;i<count;i++){
            unichar c=[str6 characterAtIndex:i];
            NSLog(@"中文情况=%C",c);
        }

遍历字符串字符

    第一种方式NSString *abc=[str6 substringWithRange:NSMakeRange(i,1)];

    第二种方式unichar c=[str6 characterAtIndex:i];

    这种需要注意中文的问题,第二种方式出现中文%c输出则为乱码,必须使用%C才能正确的输出中文。效果如下

2014-02-13 20:53:13.253 ObjectC10[460:303] 字符串长度:13
2014-02-13 20:53:13.253 ObjectC10[460:303] 我
2014-02-13 20:53:13.254 ObjectC10[460:303] 是
2014-02-13 20:53:13.254 ObjectC10[460:303] 任
2014-02-13 20:53:13.255 ObjectC10[460:303] 盈
2014-02-13 20:53:13.255 ObjectC10[460:303] 盈
2014-02-13 20:53:13.255 ObjectC10[460:303]
2014-02-13 20:53:13.256 ObjectC10[460:303] 笑
2014-02-13 20:53:13.256 ObjectC10[460:303] 傲
2014-02-13 20:53:13.257 ObjectC10[460:303] 江
2014-02-13 20:53:13.257 ObjectC10[460:303] 湖
2014-02-13 20:53:13.258 ObjectC10[460:303] a
2014-02-13 20:53:13.258 ObjectC10[460:303] b
2014-02-13 20:53:13.258 ObjectC10[460:303] c
2014-02-13 20:53:13.259 ObjectC10[460:303] 中文情况=
时间: 2024-10-10 06:23:01

Object C学习笔记7-字符串NSString之一的相关文章

Object C学习笔记17-动态判断和选择器

当时学习Object C的时被人鄙视了一顿,说使用.NET的思想来学Object C就是狗屎:不过也挺感谢这位仁兄的,这让我学习的时候更加的谨慎.今天的学习笔记主要记录Object C中的动态类型相关内容. 首先还是和.NET先对比一下,.NET中存在一个关键字var ,这个估计用过.NET的都知道,除非没有接触过3.0以上版本的.在.NET中能够使用var来声明任何类型的局部变量,负责告诉编译器,该变量需要根据初始化表达式来推断变量的类型,而且只能是局部变量.但是这里要注意的时var 并不是一

Object C学习笔记10-静态方法和静态属性

在.NET中我们静态使用的关键字static有着举足轻重的作用,static 方法可以不用实例化类实例就可以直接调用,static 属性也是如此.在Object C中也存在static关键字,今天的学习过程使用到了这个关键字,在这里记录一下static的使用. 在Object C的语法中声明后的static静态变量在其他类中是不能通过类名直接访问的,它的作用域只能是在声明的这个.m文件中 .不过可以调用这个类的方法间接的修改这个静态变量的值.对于Object C中的类使用和定义在前面已经做过相应

Object C学习笔记21-typedef用法

在上一章的学习过程中遇到了一个关键字typedef,这个关键字是C语言中的关键字,因为Object C是C的扩展同样也是支持typedef的. 一. 基本作用 typedef是C中的关键字,它的主要作用是给一个数据类型定义一个新的名称,这些类型报告内部数据类型,比如int,char 还有自定义类型struct,enum等. typedef一般有两个作用:(1) 给某种类型顶一个定义比较容易记的名字,相当于别名;(2)简化较为复杂的类型声明.   二. typedef的使用 1. 定义新类型 语法

Object C学习笔记8-字符串NSString之二

5. 字符串是否包含 hasPrefix 判断字符串是否以某个字符串开头 hasSuffix 判断字符串是否以某个字符串结尾 NSString *str1=@"Object C学习正在进行中.... LOVE"; if([str1 hasPrefix:@"Object"]){ NSLog(@"字符串:%@是以%@开头",str1,@"Object"); } if([str1 hasSuffix:@"LOVE"

Object C学习笔记15-协议(protocol)

在.NET中有接口的概念,接口主要用于定义规范,定义一个接口关键字使用interface.而在Object C 中@interface是用于定义一个类的,这个和.NET中有点差别.在Object C中有一个协议(protocol) 的概念,这个和.NET中的interface类似. 协议(Protocol) 在列出的方法在本类中并没有相应实现,而是别的类来实现这些方法,而定义协议必须使用protocol关键字.   一. 如何定义protocol的定义 如何使用XCode新建一个协议.h 文件

Object C学习笔记9-字符串NSMutableString

  NSMutableString类继承自NSString,所以在NSString中的方法在NSMutableString都可以使用. NSMutableString和NSString的区别在于NSMutableString是动态的字符串,可以动态的添加,修改,删除等.在前面提到了就和.NET中的string和StringBuilder的区别一样.   1. 添加字符串 向字符串末尾添加字符串可以使用appendString方法和appendFormat方法.appendString方法主要用于

Object C学习笔记23-继承,重写,重载

前面的学习都一直在使用Object C对象,但是没有具体总结过Object C中的对象使用特性,这里简单总结一下. 一.  继承 在面向对象编程中,子类可以通过继承得到父类的可以继承的的属性和方法,在Object C中也同样如此. 先定义一个Person类,并且定义几个属性和一个方法: #import <Foundation/Foundation.h> @interface Person : NSObject{ NSString *name; int age; NSArray *itmes;

Object C学习笔记13-Dictionary字典

通过Array数组和Set集合的学习和理解,可以想象得到Dictionary也分为两种情况了,那就是可变和不可变两种类型的.的确如此,在Object C中提供了两个字典类,分别为NSDictionary 和 NSMutableDictionary. 在.NET中我们也学习过Dictionary类,这个集合的存储方式是键值对的方式存储的.而且使用Dictionary查找元素也极为简单.   一 NSDictionary 不可变字典 (1) 初始化字典 NSDictionary *dic=[NSDi

Object C学习笔记11-数组

  在Object C也提供了类似C#中的Array数组对象,在Object C中使用NSArray 来创建数组:但是在Object C中NSArray 只能存放对象类型的指针,不能存放int,char,double等基本数据类型. 一. 不可变数组对象 这个和之前的NSString有些类似,NSArray 能够创建不可变的数组对象.一旦初始化这个对象就不能动态的修改和增加这个数组. (1)使用arrayWithObjects来初始化数组内容,参考如下代码: NSArray *items=[NS