iOSDay13之NSString

C语言中,字符串是有char(ASC||码)字符组成。

OC中,字符串是由unichar(Unicode)字符组成。

1、字符串(NSString)

 NSString:不可变字符串,即:创建以后,内容和长度不能更改。

 NSMutableString:可变字符串,即:创建以后,内容和长度可以修改。

2、不可变字符串创建

 1> 初始化方法创建对象

  - (instancetype)initWithFormat:(NSString *)format, ... NS_FORMAT_FUNCTION(1,2);

   1 NSString *string1= [[NSString alloc] initWithFormat:@"hello wold"];

 2> 便利构造器创建对象

  + (instancetype)stringWithFormat:(NSString *)format, ... NS_FORMAT_FUNCTION(1,2);

   1 NSString *string2 = [NSString stringWithFormat:@"hell wold"];

 3> 字面量创建对象

   1 NSString *string3 = @"hello kitty";                                      

3、不可变字符串常用方法

 1> 获取字符串的长度

  @property (readonly) NSUInteger length;

  实现方式:str.length;

 2> 获取指定位置的字符  unichar OC 中用来表示字符

  - (unichar)characterAtIndex:(NSUInteger)index;

unichar c= [string2 characterAtIndex:0];

NSLog(@"c =%c",c);

 3> 字符串比较

  ① 比较

   - (NSComparisonResult)compare:(NSString *)string;

1   NSString *s12 = @"zhaofuyi";
2   NSString *s13 = @"wanghai";
3   NSInteger result = [s12 compare:s13];
4   NSLog(@"result = %ld", result);

  ② 字符串是否相等

   - (BOOL)isEqualToString:(NSString *)aString;

BOOL isEqual = [s12 isEqualToString:s13];
NSLog(@"isEqual = %d", isEqual);

 4> 拼接字符串

  ① - (NSString *)stringByAppendingString:(NSString *)aString;

1        NSString *string8 = @"nana";
2        NSString *string9 = @"liuaoran";
3        NSString *stringlove = [string8 stringByAppendingString:string9];
4        NSLog(@"stringlove=%@",stringlove);

  ② - (NSString *)stringByAppendingFormat:(NSString *)format, ...;

 5> 替换字符串

  ① - (NSString *)stringByReplacingCharactersInRange:(NSRange)range withString:(NSString *)replacement;

    NS_INLINE NSRange NSMakeRange(NSUInteger loc, NSUInteger len);  // 确定位置和长度

  ② - (NSString *)stringByReplacingOccurrencesOfString:(NSString *)target withString:(NSString *)replacement

1 NSString *string10 = @"李易峰";
2
3 NSString *string11 = [string10 stringByReplacingOccurrencesOfString:string10 withString:@"赵符壹"];
4
5 NSLog(@"nan=%@",string11);

 6> 字符串对象转化为其他类型

  @property (readonly) double doubleValue;
  @property (readonly) float floatValue;
  @property (readonly) int intValue;
  @property (readonly) NSInteger integerValue NS_AVAILABLE(10_5, 2_0);
  @property (readonly) long long longLongValue NS_AVAILABLE(10_5, 2_0);
  @property (readonly) BOOL boolValue NS_AVAILABLE(10_5, 2_0);

1         NSString *s14 = @"123";
2         NSInteger strValue = [s14 integerValue];
3         NSLog(@"strValue = %ld", strValue);

 7> 判断字符串的前缀和后缀

  - (BOOL)hasPrefix:(NSString *)str; // 前缀
  - (BOOL)hasSuffix:(NSString *)str; // 后缀

1 NSString *string4 = @"www.欧巴.png";  // 图片欧巴
2
3 BOOL isHassuffix = [string4 hasSuffix:@".png"];  // 后缀
4 NSLog(@"isHassuffix=%d",isHassuffix);
5
6 BOOL ishasprefix = [string4 hasPrefix:@"www."];
7 NSLog(@"ishasprefix = %d",ishasprefix);  // 前缀

 8> 查找某个字符串在另一个字符串的范围

  - (NSRange)rangeOfString:(NSString *)searchString;

1      NSString *string5 = @"蓝鸥科技有限公司";
2      NSString *string6 = @"蓝鸥科技";
3
4      // NSRange 结构体,表示成员变量
5      // location   起始位置
6      // length  长度
7      NSRange range =[string5 rangeOfString:string6];
8      NSLog(@"location=%ld,length = %ld",range.location,range.length);

 9> 字符串截取

  - (NSString *)substringWithRange:(NSRange)range;

1 NSString *string7 = @"hello wold kitty";
2
3 NSRange range1 = NSMakeRange(0, 5);
4 NSString *sunstr1 = [string7 substringWithRange:range1];
5 NSLog(@"sunstr1=%@",sunstr1);

  从指定位置向后截取

  - (NSString *)substringFromIndex:(NSUInteger)from;

  从指定位置向前截取,不包含指定位置的下标

  - (NSString *)substringToIndex:(NSUInteger)to;

1         // 从指定位置向后截取
2         NSString *sunstr2 = [string7 substringFromIndex:12];
3         NSLog(@"sunstr2=%@",sunstr2);
4         // 从指定位置向前截取,不包含指定位置的下标
5         NSString *sunstr3 = [string7 substringToIndex:5];
6         NSLog(@"sunstr3=%@",sunstr3);

 10> 字符串大小写操作

  ① 字符串全部大写

   @property (readonly, copy) NSString *uppercaseString;

  ② 字符串全部大写

   @property (readonly, copy) NSString *lowercaseString;

  ③ 字符串首字母大写

   @property (readonly, copy) NSString *capitalizedString;

 1         // 首字母大写
 2         NSString *s15 = @"zheng";
 3         s15 = [s15 capitalizedString];
 4         NSLog(@"s15 = %@", s15);
 5         // 全部大写
 6         s15 = [s15 uppercaseString];
 7         NSLog(@"s15 = %@", s15);
 8         // 全部小写
 9         s15 = [s15 lowercaseString];
10         NSLog(@"s15 = %@", s15);

4、可变字符串(NSMutableString)创建

 1> 可变与不可变的区别

  不可变字符串 —— 本身不能被修改。

  对不可变字符串的修改操作,操作的是原字符串的副本,得到的是一个新的字符串。

  可变字符串 —— 本身能被修改。

  可变字符串修改的是原字符串,因此可变字符串的操作方法没有返回值。

 2> 初始化方法创建对象

  - (NSMutableString *)initWithString:(NSString *)format;

 3> 便利构造器创建对象

  + (NSMutableString *)stringWithString:(NSString *)format;

1         // 初始化
2         NSMutableString *ms1 = [[NSMutableString alloc] initWithFormat:@"Hello world"];
3         // 便利构造器
4         NSMutableString *ms2 = [NSMutableString stringWithFormat:@"Hello kitty"];

5、NSMutableString方法

 1> 拼接字符串

  - (void)appendFormat:(NSString *)format, ...;

 2> 插入字符串

  - (void)insertString:(NSString *)aString atIndex:(NSUInteger)loc;

 3> 删除字符串

  - (void)deleteCharactersInRange:(NSRange)range;

 4> 替换字符串

  - (void)replaceCharactersInRange:(NSRange)range withString:(NSString *)aString;

 5> 重置字符串

  - (void)setString:(NSString *)aString;

 1 // 1.拼接字符串
 2 NSMutableString *ms3 = [NSMutableString stringWithFormat:@"-1"];
 3 [ms3 appendString:@"软件38"];
 4 NSLog(@"ms3 = %@", ms3);
 5 // 2.插入字符串
 6 [ms3 insertString:@"," atIndex:2];
 7 NSLog(@"ms3 = %@", ms3);
 8  // 3.删除字符串
 9 NSRange range4 = NSMakeRange(3, 2);
10 [ms3 deleteCharactersInRange:range4];
11 NSLog(@"ms3 = %@", ms3);
12 // 4.字符串替换
13 NSMutableString *ms4 = [NSMutableString stringWithFormat:@"赵符以"];
14 [ms4 replaceCharactersInRange:NSMakeRange(1, 2) withString:@"-1"];
15 NSLog(@"ms4 = %@", ms4);
16 // 5.重置字符串
17 [ms4 setString:@"ruanjian38"];
18 NSLog(@"ms4 = %@", ms4);
时间: 2024-12-21 11:18:44

iOSDay13之NSString的相关文章

iOS - 字符串(NSString)

/*________________________NSString(不可变字符串)________________________*/ //________________________1.字符串的创建___________________________________// //创建字符串常量 NSString *string1 = @"Hello";  //内容不变 string1 = @"Hello world"; //创建字符串 NSString *st

IOS开发-ObjC-NSString

NSString是oc语言Foundation框架中常用的类,我根据每个方法的功能将NSString的常用方法分为创建字符串.初始化字符串.判断和比较字符串.大写和小写相互转化.字符串的截取.类型转换等功能.它的方法按功能分如图所示(具体每个方法的作用我在后后面有详细的备注,其实根据驼峰命令也基本可以看出每个方法的作用),有些方法带参数,有些不带参数,方法的使用都很容易,在Xcode下编程时会自动匹配: 1??创建字符串: 1 string:创建一个空字符串 2 stringWithstring

继承NSString,NSArray 怎么写

今天在进行一个字符串测试的时候,自定义了一个继承自NSString的类,但是出现了一些问题,查阅官方文档后得到了下面这些结论 在Objective-C中,对于NSString.NSArray等一些系统的基础类,苹果公司不推荐继承创建新类的,要想给它们扩展功能只能给它们添加新的categroy(类目). 但是直接继承的话,也是可行的,只是会出现各种问题 以NSString为例 首先,创建一个NSString的子类 BFString,不添加任何方法和属性 直接创建一个BFString的实例对象,是没

【非凡程序员】 OC第五节课 (数据类型NSString和NSString)

//  main.m//  ZiFuChuan////  Created by 非凡程序员 on 15/5/18.//  Copyright (c) 2015年 非凡程序员. All rights reserved.// #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) {    @autoreleasepool { NSString *[email protected]"AB"

ios Enum Value To NSString

#define enumToString(value)  @#value eg. typedef NS_ENUM(NSInteger, Sex) { Male = 0, Famale = 1, }; NSString * string =  enumToString(Male); [email protected](@"string=%@", string); string=Male;

继续NSString的学习

一.大小写转换1.- (NSString *)uppercaseString; 所有字符转化为大写2.- (NSString *)lowercaseString; 所有字符转化为小写3.- (NSString *)capitalizedString; 所有单词首字母转化大写 NSLog(@"%@", [demoTwo uppercaseString]);NSLog(@"%@", [demoTwo lowercaseString]);NSLog(@"%@&q

IOS中NSString的常见用法

iOS NSString的常用用法 //1.创建常量字符串. NSString *astring = @"This is a String!"; //2.创建空字符串,给予赋值. NSString *astring = [[NSString alloc] init]; astring = @"This is a String!"; //3.在以上方法中,提升速度:initWithString方法 NSString *astring = [[NSString allo

iOS解决NSData转NSString后字符为空

iOS中,将NSData转NSString的一般方法为[[NSString alloc] initWithData:data encoding:NSUTF8StringEncoding];但是当data中包含00时,所获得的新字符就会为nil,这时我们应该这样转 [NSString stringWithUTF8String:[data bytes]];

NSString基本概念

1.NSString基本概念 什么是NSString? 一个NSString对象就代表一个字符串(文字内容) 一般称NSString为字符串类 2.NSString创建方式 最直接的方式(常量字符串) 常量区中的字符串只要内容一致, 不会重复创建 NSString *str1 = @"lnj"; NSString *str3 = @"lnj"; NSLog(@"str1 = %p, str3 = %p", str1, str3); 输出地址一致