Objective-C: 字符串NSString与NSMutableString

  字符串算是OC中非常重要和常用的一部分内容,OC中的字符串与我之前在学习C,C++,Java中的字符串有一定的不同,它非常类似于C++中容器的概念,但用法却与之还是有很大的不同,也许是因为OC的语法就与其他我们常用的编程语言不尽相同。

   这里总结一下字符串NSString与NSMutableString。

一. NSString

NSString代表字符序列不可变的字符串,NSString的功能非常强大,OC的字符串处理比C语言的饿字符串简单、易用得多。

这里我们通过一个具体的例子来进行分析。

创建两个字符串对象:

NSString *str1 = @"this is string A";
NSString *str2 = @"this is string B";

计算字符串中的字符个数

NSLog(@"Length of str1 : %lu" , [str1 length]);

利用stringWithString 将一个字符串复制到另一个字符串:

res = [NSString stringWithString : str1];
res = [str1 copy];
NSLog(@"copy : %@" , res);

stringByAppendingString,将一个字符串复制到另一个字符串的末尾:

str2 = [str1 stringByAppendingString:str2];

isEqualToNumber : 方法比较两个NSNumber对象的数值。程序会返回一个BOOL值,查看这两个值是否相等。

isEqualToString,判断两个字符串是否相等:

if([str1 isEqualToString: res] == YES)
            NSLog(@"str1 == res");
else
            NSLog(@"str1 != res");

compare : 方法测试一个值是否在数值上小于、等于或大于另一个值。
      如: [intNumber compare : myNumber]
      若intNumber 小于 myNumber ,返回NSOrderedAscending ;
                           相等                    ,返回NSOrderdSame;
                           大于                    ,返回NSOrderdDescending

       //验证一个字符串是否小于、等于或大于另一个字符串
        compareResult = [str1 compare: str2];

        if(compareResult == NSOrderedAscending)
            NSLog(@"str1 < str2");
        else if(compareResult == NSOrderedSame)
            NSLog(@"str1 == str2");
        else
            NSLog(@"str1 > str2");

uppercaseString,将字符串转换为大写。

 lowercaseString,将字符串转换为小写。

        //将字符串转换为大写
        res = [str1 uppercaseString];

        //将字符串转换为小写
        res = [str1 lowercaseString];
       

stringByAppendingString,在字符串后面添加固定的字符串:

str = [str stringByAppendingString:@", iOS!"];

substringToIndex,获取str的前10个字符组成的字符串:

substringToIndex:方法创建了一个子字符串,包括首字符都指定的索引数,但不包括这个字符。因为索引数是从0开始的,所以参数3表示从字符串中提取0、1、2,并返回结果字符串对象。对于所有采用索引数作为参数的字符串方法,如果提供的索引数对该字符串无效,就会获得Range or index out of bounds的出错信息。

        //获取str的前10个字符组成的字符串
        NSString *s1 = [str substringToIndex:10];
        NSLog(@"%@" , s1);

substringFromIndex,获取str从第5个字符开始,与后面字符组成的字符串:

        //获取str从第5个字符开始,与后面字符组成的字符串
        NSString *s2 = [str substringFromIndex:5];
        NSLog(@"%@" , s2);

获取str从第5个字符开始,到第15个字符组成的字符串:

        //获取str从第5个字符开始,到第15个字符组成的字符串
        NSString *s3 = [str substringWithRange:NSMakeRange(5, 15)];
        NSLog(@"%@" , s3);

rangeOfString , 获取ios在str中出现的位置:

        //获取iOS在str中出现的位置
        NSRange pos = [str rangeOfString:@"iOS"];
        NSLog(@"ios在str中出现的开始位置:%ld , 长度为:%ld" , pos.location , pos.length);

二. NSMutableString

NSMutableString对象代表一个字符序列可变的字符串,而且NSMutableString是NSString的子类,因此前面介绍的NSString所包含的方法,NSMutableString都可以直接使用,NSMutableString对象也可直接当成NSString对象使用。

stringWithString,用不可变字符串创建可变字符串:

        //从不可变字符串创建可变字符串
        mstr = [NSMutableString stringWithString:str1];
        NSLog(@"%@" , mstr);

insertString,插入字符:

        //插入字符
        [mstr insertString:@"mutable" atIndex:7];
        NSLog(@"%@" , mstr);

insertString:  atIndex:   ,插入末尾进行有效拼接:

        //插入末尾进行有效拼接
        [mstr insertString:@" and string B" atIndex:[mstr length]];
        NSLog(@"%@" , mstr);

deleteCharactersInRange:NSMakeRange() , 根据范围删除子字符串:

        //根据范围删除子字符串
        [mstr deleteCharactersInRange: NSMakeRange(16, 13)];
        NSLog(@"%@" , mstr);

查找然后直接删除

        //查找然后将其删除
        substr = [mstr rangeOfString:@"string B and "];

        if(substr.location != NSNotFound){
            [mstr deleteCharactersInRange:substr];
            NSLog(@"%@" , mstr);
        }

示例代码如下:

 1 #import <Foundation/Foundation.h>
 2
 3 int main(int argc, const char * argv[])
 4 {
 5
 6     @autoreleasepool {
 7
 8         // insert code here...
 9         //NSLog(@"Hello, World!");
10
11         NSString *str1 = @"this is string A";
12         NSString *search , *replace;
13         NSMutableString *mstr;
14         NSRange substr;
15
16         //从不可变字符串创建可变字符串
17         mstr = [NSMutableString stringWithString:str1];
18         NSLog(@"%@" , mstr);
19
20         //插入字符
21         [mstr insertString:@"mutable" atIndex:7];
22         NSLog(@"%@" , mstr);
23
24         //插入末尾进行有效拼接
25         [mstr insertString:@" and string B" atIndex:[mstr length]];
26         NSLog(@"%@" , mstr);
27
28
29         //直接使用appendString
30         [mstr appendString:@" and string C"];
31         NSLog(@"%@" , mstr);
32
33         //根据范围删除子字符串
34         [mstr deleteCharactersInRange: NSMakeRange(16, 13)];
35         NSLog(@"%@" , mstr);
36
37         //查找然后将其删除
38         substr = [mstr rangeOfString:@"string B and "];
39
40         if(substr.location != NSNotFound){
41             [mstr deleteCharactersInRange:substr];
42             NSLog(@"%@" , mstr);
43         }
44
45
46         //直接设置为可变的字符串
47         [mstr setString:@"this is string A"];
48         NSLog(@"%@" , mstr);
49
50         //替换一些字符
51         [mstr replaceCharactersInRange:NSMakeRange(8, 6) withString:@" a mutable string"];
52         NSLog(@"%@" , mstr);
53
54         //查找和替换
55         search = @"this is";
56         replace = @"an example of";
57
58         substr = [mstr rangeOfString:search];
59
60         if(substr.location != NSNotFound){
61             [mstr replaceCharactersInRange:substr withString:replace];
62             NSLog(@"%@" , mstr);
63         }
64
65         //查找和替换所有的匹配项
66         search = @"a";
67         replace = @"X";
68
69         substr = [mstr rangeOfString:search];
70
71         while (substr.location != NSNotFound) {
72             [mstr replaceCharactersInRange:substr withString:replace];
73
74         }
75
76         NSLog(@"%@" , mstr);
77
78     }
79     return 0;
80 }

时间: 2024-11-10 06:21:12

Objective-C: 字符串NSString与NSMutableString的相关文章

OC之字符串 NSString与NSMutableString

一.NSString 不可变字符串的操作1)将字符串常量对象直接赋值给字符串引用 NSString *[email protected]"hello"; 字符串对象的输出格式:NSLog(@"str1=%@",str1). 2)initWithString可将OC中的字符串对象构建字符串引用  NSString *str2=[[NSString alloc]initWithString:str1]; . 3)initWithUTF8String可将C语言的字符串创建

Foundation框架(NSString、NSMutableString)

OC字符串(NSString.NSMutableString) 概述:在Object C中存在两个类用于操作字符串,NSString和NSMutableString;NSString在赋值之后不能修改其内容和长度,而NSMutableString可以动态的修改字符串内容和长度. 一.NSString 1.NSString的多种定义方式 1)使用@符号快速创建一个字符串 NSString *str1 = @“jack”; 2)使用对象初始化方法 initWithString  NSString *

bjective-C 中核心处理字符串的类是 NSString 与 NSMutableString

Objective-C 中核心处理字符串的类是 NSString 与 NSMutableString ,这两个类最大的区别就是NSString 创建赋值以后该字符串的内容与长度不能在动态的更改,除非重新给这个字符串赋值.而NSMutableString 创建赋值以后可以动态在该字符串上更改内容与长度. 1.创建经典的NSString字符串 NSString 与 char* 最大的区别就是 NSString是一个objective对象,而char* 是一个字节数组.@+ " 字符串 " 

OC语言--字符串(NSString&amp; NSMutableString)

首先声明一下: OC 中的函数,是全局的,如 NSLog():,它不属于任何类,不属于任何一个对象. OC 中的方法,非全局的,init 方法,用中括号来使用,它属于类本身,或者属于对象本身:分为类方法,和实例方法(对象方法):方法被封装对象,或类模板当中 1. 不可变字符串NSString 1.1 OC字符串和C字符串的不同 OC字符串是对象,占用堆空间:C 字符串是数据,它占用栈空间 1.2 OC字符串的常见操作 (1) 常用创建方法 //实例方法创建字符串 - (instancetype)

Objective-C学习- 字符串类型 NSString 和 NSMutableString

相比于C语言来讲,一般面向对象的语言都有一种类型来专门的处理字符串类型,如C++的string,JAVA的String..  Objectiver-C 自然也有种类型来专门处理字符串,叫做NSString. Objective-C中的字符串也分为两种:NSString(不可变字符串),NSMutableString(可变字符串),NSMutableString类是NSString的一个子类. 注:Objective-C中的字符串 都需要用@"内容",前边必须要用一个@ (1)NSStr

关于NSString和NSMutableString的相关用法和基本介绍

Objective-C 中核心处理字符串的类是 NSString 与 NSMutableString ,这两个类最大的区别就是NSString 创建赋值以后该字符串的内容与长度不能在动态的更改,除非重新给这个字符串赋值.而NSMutableString 创建赋值以后可以动态在该字符串上更改内容与长度. NSString 常用方法总结 +(id)stringWithContentsOfFile:path encoding:enc err 创建一个新字符串并将其设置为 path 指定文件的内容,使用

iOS 字符串nsstring

//将NSData转化为NSString        NSString* str = [[NSString alloc] initWithData:response encoding:NSUTF8StringEncoding];//将NSString 转化为NSData (NSString.h)- (NSData *)dataUsingEncoding:(NSStringEncoding)encoding; //载一个字符串中删除一个字符或字符串[_display deleteCharacte

IOS阶段学习第13天笔记(NSString与NSMutableString)

IOS学习(OC语言)知识点整理 一.OC字符串的操作 1)OC中字符串分为两种: 1.不可变字符串NSString:不能修改对象内容,但是可以改变对象的指针. 2.可变字符串NSMutableString:可以修改对象内容. 二.NSString 不可变字符串的操作 1)将字符串常量对象直接赋值给字符串引用 NSString *[email protected]"hello"; 字符串对象的输出格式:NSLog(@"str1=%@",str1). 2)initWi

Foundation框架中的NSString和NSMutableString的用法

一.NSString对象 在OC中,NSString对象是非常重要的一个对象,也是最基础的一个对象,是用来处理字符串的常用类. 1.创建的方法 //1.--------------字符串的创建方式 NSString *string1 = @"wehrwuer"; NSLog(@"%@",string1); //alloc创建字符串 string1 = [[NSString alloc] initWithString:@"ajfjrioewi"];