OC_字符串的各种方法与类别

【字符串】

【注】OC的程序,依托于基础类库Foundation.Foundation框架提供了很多官方类,其中有三个基础的数据结构。

【字符串】【数组】【字典】

知识点

1.NSString

2.NSMutableString

*****************************************************************************

========= 不可变字符串(NSString) =========

1.为什么需要NSString对象

答:在OC中创建字符串时,一般不使用C的方法,

因为C将字符串作为字符数组,所以在操作时会有很多不方便的地方,

在Cocoa中NSString集成的一些方法,可以很方便的操作字符串。

2.OC中定义字符串和C语言定义字符串

OC:  NSString *str = @“aaa”;

C:   char *c = “aaa”;

char c[20] = “hello”;

3.NSLog如何格式化NSString对象

OC语言:%@

C语言:%s

4.字符串创建

(1)定义字符串常量:

NSString *str = @"My name is xiaoming.";

//@“XXX”表示告诉编译器,创建一个字符串对象,返回值是对象的地址。

//只有官方类有这样的特权。

(2)通过一个字符串创建另一个字符串

NSString * str2 = [[NSString alloc] initWithString:str];

//NSString * str3 = [[NSString alloc] initWithString:@"我是一个字符串咿呀咿呀呦!"];

(3)将C字符串转换为OC字符串

NSString * str3 = [[NSString alloc] initWithUTF8String:"我是C字符串"];

(4)使用格式符创建字符串(拼接字符串)

NSString * str4 = [[NSString alloc] initWithFormat:@"我是万能拼接字符串%d %c %.2f", 1, ‘T‘, 3.14];

[注]每一个init方法,对应一个stringwith的类方法

(5)

NSString *str5 = [NSString stringWithString:str];

(6)

NSString *str6 = [NSString stringWithUTF8String:"qianfeng"];

(7)

NSString *str7 = [NSString stringWithFormat:@"我是万能拼接字符串%d %c %.2f", 1, ‘T‘, 3.14];

5.C语言字符串和NSString的转换

//1.把C字符串转化为OC字符串

str = [NSString stringWithUTF8String:cString];

//2.把OC字符串转化为C字符串

const char *c = [ocString UTF8String];

6.求字符串长度(字符个数)

//汉字的长度也为1

NSUInteger ret = [str length];

7.通过索引获取相应的字符

unichar c = [str characterAtIndex:i];

NSLog(@"%C", c);

//unicode 万国码,用更大的存储空间存储各国字符。

//mac下默认的编码格式称为UTF-8编码格式,是万国码的一个分支,理念是不同的字符,用不同的字节来存储。比如一个汉字占3字节,一个英语字符1字节,但都是一个字符。

8.字符串判断

1)判断两个字符串内容是否相同

//比较两个字符串内容是否相同(区分大小写)

BOOL isEq = [str2 isEqualToString:str3];

BOOL类型:YES是真(1),NO是假(0)

if (isEq == YES)

{

NSLog(@"内容相同");

}

else

{

NSLog(@"内容不相同");

}

2)判断两个字符串是否是同一个对象

if (str2 == str3)

{

NSLog(@"同一个对象");

}

else

{

NSLog(@"不是同一个对象");

}

9.字符串比较

NSComparisonResult result = [str1 compare:str2];

switch (result)

{

case NSOrderedAscending:

NSLog(@"升序");

break;

case NSOrderedSame:

NSLog(@"相同");

break;

case NSOrderedDescending:

NSLog(@"降序");

break;

default:

break;

}

10.转化为基本类型(int,float,bool,double,integer)

(1)int                       [str1 intValue]

(2)NSInteger     [str1 integerValue]

(3)float         [str1 floatValue]

(4)bool          [str1 boolValue];

(5)double        [str1 doubleValue]

(6)long long      [str1 longLongValue]

11. 替换字符串

//B字符串替换A字符串(A被B替换)

[str1 stringByReplacingOccurrencesOfString:@“A” withString:@“B”];

12.查找子串的位置和范围

NSRange range = [str rangeOfString:@"粉刷"];

if (range.location == NSNotFound)

{

NSLog(@"没找到!");

}

else

{

NSLog(@"%lu %lu", range.location, range.length);

}

13.子串的提取

(1)从0开始到指定位置 之前

NSString * subStr1 = [str substringToIndex:5];

(2)从指定下标开始截取到最后

NSString * subStr2 = [str substringFromIndex:5];

(3)截取任何一部分

NSRange range = {1,5};

NSString * subStr3 = [str substringWithRange:range];

========= 可变字符串(NSMutableString) =========

NSMutableString 继承自 NSString

1.凡是NSString的方法,NSMutableString都能用

2.凡是传参需要传入NSString * 传入NSMutableString *也行

1.初始化可变字符串(必须初始化)

(1) NSMutableString *string = [[NSMutableString alloc] init];

(2)  string = [NSMutableString string];

2.初始化带有字符串的可变字符串

string = [NSMutableString stringWithFormat:];

[NSMutableString stringWithString:];

3.重置字符串内容

[string setString:@"abbbb"];

4.根据指定的位置插入字符串

[string insertString:@“要插入的字符串” atIndex:下标];

5.追加一个部分字符串(在最后追加)

(1)[string appendString:@“要追加的字符串”];

(2)[string appendFormat:@"name=%@",@"xiaoming"];

6.删除字符串一部分

//找要删除的范围

NSRange range = [string rangeOfString:@"22222"];

//删除

[string deleteCharactersInRange:range];

7.修改字符串

[str replaceCharactersInRange:range withString:@"XXXXXXXXXXXXXXX"];

******************************************************************************

【类别/category】

———————————————————————————————————————

<1>.类别的写法:

@interface 类名 (类别名)

定义方法

@end

【注】一旦使用类别给已有的类增补方法,那么这个类的对象就可以使用这个方法

<2>.类别功能:

1. 可以给已有/ 系统原生的类增加方法

2.可以对类的方法进行分类管理,可以将类的实现分散到多个不同文件或多个不同框架中。

<3>使用类别需要注意的问题

1.类别中不能添加成员变量

2.使用类别增加的方法须导入类别头文件

3.父类类别中的方法,子类也可以用

<4>类扩展/匿名类别

当不想对外公开一些类的方法时,我们可以使用类扩展

1.类扩展的基本语法(写在在.m文件中)

@interface Person()//没有名字

- (void)song;

@end

@implementation Person

- (void)song{

}

@end

【注】类扩展中的声明和实现都放在.m文件中

2.类扩展的功能

1.可以实现私有方法

2.方便程序员调用不公开的方法

3.可以声明成员变量

时间: 2024-10-14 18:45:24

OC_字符串的各种方法与类别的相关文章

7.python字符串-内置方法分析

上篇对python中的字符串进行了列举和简单说明,但这些方法太多,逐一背下效率实在太低,下面我来对这些方法安装其功能进行总结: 1.字母大小写相关(中文无效) 1.1 S.upper() -> string 返回一个字母全部大写的副本 1.2 S.lower() -> string 返回一个字母全是小写的副本 1.3 S.swapcase() -> string 返回一个字母大小写转换后的副本 1.4 S.title() -> string 将单词的首字母大写,即为所谓的标题 方框

JS总结之一:字符串的调用方法

字符串的调用方法:var s="hello, world";document.write(s.charAt(0)); //第一个字符document.write(s.charAt(s.length-1)); //最后一个字符document.write(s.substring(1,4)); //第2~4个字符document.write(s.slice(-3)); //最后3个字符document.write(s.indexOf("l")); //字符l首次出现的位

Oracle字符串连接的方法

Oracle数据库中,使用“||”进行字符串连接,下面就让我们一起了解一下Oracle数据库中字符串连接的方法,希望对您能有所帮助. 和其他数据库系统类似,Oracle字符串连接使用“||”进行字符串拼接,其使用方式和MSSQLServer中的加号“+”一样. 比如执行下面的SQL语句:SELECT '工号为'||FNumber||'的员工姓名为'||FName FROM T_EmployeeWHERE FName IS NOT NULL 除了“||”,Oracle还支持使用CONCAT()函数

深入.Net字符串类型 Join方法

.Net的字符串其实还是有很多东西可以写的.但是最近在学习SQL Server,只好先做下最近学习到的一些巧用,妙用之类的东西. 巧用String.Join拼接字串数组,字符串集合为字符串.如果在之前,一个foreach早就敲上去了.虽然效率差多,但是少了个foreach,还是美观不少的. class Program { static void Main(string[] args) { List<string> listStr = new List<string>(); list

Python 字符串分割的方法

在平时工作的时候,发现对于字符串分割的方法用的比较多,下面对分割字符串方法进行总结一下:第一种:split()函数split()函数应该说是分割字符串使用最多的函数用法:str.split('分割符')通过该分割操作后,会返回一个列表. 注:当然如果你的字符串含有一个或者多个空格就直接 str.split() 就可以了 例如: >>> a = "hello,python,Good Night" >>> a.split(',') ['hello', '

【转】三种常用的字符串判空串方法

1. 三种常用的字符串判空串方法:Length法:bool isEmpty = (str.Length == 0);Empty法:bool isEmpty = (str == String.Empty);General法:bool isEmpty = (str == ""); 2. 深入内部机制:要探讨这三种方法的内部机制,我们得首先看看.NET是怎样实现的,也就是要看看.NET的源代码!然而,我们哪里找这些源代码呢?我们同样有三种方法:Rotor法:一个不错的选择就是微软的Rotor

多线程的方法和类别

获取名字 * 通过getName()方法获取线程对象的名字 new Thread("xxx") { public void run() { for(int i = 0; i < 1000; i++) { System.out.println(this.getName() + "....aaaaaaaaaaaaaaaaaaaaaaa"); } } }.start(); new Thread("yyy") { public void run()

ASP.NET C# 去掉字符串中间空格方法

 string strName = "大     张     伟";             string str = Regex.Replace(strName, @"\s", "");             Response.Write("输出内容:" + str); ASP.NET C# 去掉字符串中间空格方法,布布扣,bubuko.com

sqlserver字符串拆分(split)方法汇总

--方法0:动态SQL法 declare @s varchar(100),@sql varchar(1000) set @s='1,2,3,4,5,6,7,8,9,10' set @sql='select col='''+ replace(@s,',',''' union all select ''')+'''' PRINT @sql exec (@sql) --方法1:循环截取法 if exists (select * from dbo.sysobjects where id = object