您的位置:首页 > 移动开发 > IOS开发

IOS 基础知识 Foundation-NSString和NSMutableString的使用

2014-08-11 08:44 537 查看


1.NSString的导入和导出

//
// main.m

// NSString

#import <Foundation/Foundation.h>

#pragma mark NSString的创建

void stringCreate() {

// char *s = "A String!"; // C语言中的字符串

// 这种方式创建出来的字符串是不需要释放的

NSString *str1 = @"A String!";

NSString *str2 = [[NSString alloc] init];

str2 = @"A String!";

[str2 release];

NSString *str3 = [[NSString alloc] initWithString:@"A String!"];

[str3 release];

// 不需要管理内存

str3 = [NSString stringWithString:@"A String!"];

NSString *str4 = [[NSString alloc] initWithUTF8String:"A String!"];

[str4 release];

str4 = [NSString stringWithUTF8String:"A String!"];

NSString *str5 = [[NSString alloc] initWithFormat:@"My age is %i and height is %.2f", 19, 1.55f];

// 这句代码放在中间会造成2个错误:

// 1.前面创建的字符串没有被释放

// 2.后面创建的字符串会释放过度,造成野指针错误

// str5 = [NSString stringWithFormat:@"My age is %i and height is %.2f", 19, 1.55f];

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

[str5 release];

str5 = [NSString stringWithFormat:@"My age is %i and height is %.2f", 19, 1.55f];

}

void test(NSString **str) {

*str = @"123";

// s = @"123";

}

void stringCreate2() {

// 从文件中读取文本

NSString *path = @"/Users/apple/Desktop/test.txt";

// 这个方法已经过期,不能解析中文

// NSString *str1 = [NSString stringWithContentsOfFile:path];

// 定义一个NSError变量

NSError *error;

// 指定字符串编码为UTF-8: NSUTF8StringEncoding

NSString *str1 = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:&error];

if (error == nil) { // 没有错误信息

NSLog(@"读取文件成功:%@", str1);

} else {

NSLog(@"读取文件失败:%@", error);

}

NSURL *url = [NSURL URLWithString:@"file:///Users/apple/Desktop/test.txt"];

NSString *str2 = [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil];

NSLog(@"%@", str2);

NSURL *url2 = [NSURL URLWithString:@"http://www.baidu.com"];

NSString *str3 = [NSString stringWithContentsOfURL:url2 encoding:NSUTF8StringEncoding error:nil];

NSLog(@"%@", str3);

}

#pragma mark 字符串的导出

void stringExport() {

NSString *str = @"123456我是字符串!!!!";

// 如果文件不存在,会自动创建文件

// 如果文件夹不存在,会直接报错

NSString *path = @"/Users/apple/Desktop/abc.txt";

NSError *error;

// 编码指定错误也会报错

// YES代表要进行原子性操作,也就是会创建一个中间的临时文件

[str writeToFile:path atomically:YES encoding:NSUTF8StringEncoding error:&error];

if (error) {

// [error localizedDescription]会返回主要的错误信息

NSLog(@"写入失败:%@", [error localizedDescription]);

} else {

NSLog(@"写入成功");

}

}

//void test2(int *p) {

// *p = 9;// a = 9;

//}

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

{

@autoreleasepool {

// int a = 10;

// test2(&a);

// NSLog(@"%i", a);

stringExport();

// NSString *s = @"456";

//

// test(&s);

//

// NSLog(@"%@", s);

}

return 0;

}


2.NSString其他用法

//

// main.m

// Foundation4-NSString其他用法

//

// Created by mj on 13-4-5.

// Copyright (c) 2013年 itcast. All rights reserved.

//

#import <Foundation/Foundation.h>

#pragma mark 字符串的大小写处理

void caseTest() {

NSString *str = @"GuangDong";

// 转成大写

NSLog(@"大写:%@", [str uppercaseString]);

// 转成小写

NSLog(@"小写:%@", [str lowercaseString]);

// 首字母变大写,其他字母变小写

NSLog(@"首字母变大写:%@", [@"aGE" capitalizedString]);

}

#pragma mark 字符串的比较

void compare() {

// 检测字符串的内容是否相同

BOOL result = [@"abc" isEqualToString:@"abc"];

NSLog(@"%i", result);

// NSOrderedAscending 右边的字符串比左边大

// NSOrderedSame 两个字符串的内容相同

// NSOrderedDescending 左边的字符串比右边的大

NSComparisonResult result2 = [@"abc" compare:@"Abc"];

if (result2 == NSOrderedSame) {

NSLog(@"两个字符串的内容相同");

} else if (result2 == NSOrderedAscending) {

NSLog(@"右边 > 左边");

} else if (result2 == NSOrderedDescending) {

NSLog(@"右边 < 左边");

}

}

#pragma mark 字符串的搜索

void search() {

NSString *str = @"123456456.txt";

NSLog(@"是否以22开头:%i", [str hasPrefix:@"22"]);

NSLog(@"是否以txt结尾:%i", [str hasSuffix:@"txt"]);

// 搜索字符串

NSRange range = [str rangeOfString:@"456"];

// range.length == 0

if (range.location == NSNotFound) {

NSLog(@"不能找到");

} else {

NSLog(@"找到的范围是:%@", NSStringFromRange(range));

}

// 从尾部开始搜索字符串

range = [str rangeOfString:@"456" options:NSBackwardsSearch];

NSLog(@"%@", NSStringFromRange(range));

// 指定范围进行搜索

// [str rangeOfString:@"456" options:NSBackwardsSearch range:<#(NSRange)#>];

}

#pragma mark 字符串的截取

void subString() {

NSString *str = @"123456";

// 从索引3开始截取到尾部(包括3)

NSLog(@"%@", [str substringFromIndex:3]);

// 从头部开始截取到索引3之前(不包括3)

NSLog(@"%@", [str substringToIndex:3]);

// 指定范围进行截取

NSRange range = NSMakeRange(2, 3);

NSLog(@"%@", [str substringWithRange:range]);

NSString *str2 = @"a-b-c-d-5";

NSArray *array = [str2 componentsSeparatedByString:@"-"];

NSLog(@"%@", array);

NSString *str3 = [array objectAtIndex:0];

NSLog(@"%@", str3);

}

#pragma mark 与路径相关

void pathTest() {

// 快速创建一个自动释放的数组

NSMutableArray *components = [NSMutableArray array];

[components addObject:@"Users"];

[components addObject:@"MJ"];

[components addObject:@"Desktop"];

// 将数组中的所有字符串拼接成一个路径

NSString *path = [NSString pathWithComponents:components];

NSLog(@"%@", path);

// 将路径分解成一个数组

NSArray *cmps = [path pathComponents];

NSLog(@"%@", cmps);

// path是一个字符串常量,是不可变的

path = @"/users/mj/test";

// 判断是够为绝对路径(依据是前面有无/)

NSLog(@"%i", [path isAbsolutePath]);

NSLog(@"最后一个目录:%@", [path lastPathComponent]);

// 删除最后一个目录

NSLog(@"%@", [path stringByDeletingLastPathComponent]);

// 在最后面拼接一个目录

NSLog(@"%@", [path stringByAppendingPathComponent:@"abc"]);

}

#pragma mark 拓展名处理

void extension() {

NSString *str = @"/User/MJ/test.txt";

NSLog(@"拓展名:%@", [str pathExtension]);

// 删除拓展名

NSLog(@"%@", [str stringByDeletingPathExtension]);

// 添加拓展名

NSLog(@"%@", [@"abc" stringByAppendingPathExtension:@"mp3"]);

}

#pragma mark 其他用法

void other() {

NSString *str = @"12";

int a = [str intValue];

NSLog(@"%i", a);

// 计算字数,不是计算字符数

NSLog(@"length=%zi", [@"我是字符串123" length]);

// 取出对应的字符

unichar c = [@"abc" characterAtIndex:0];

NSLog(@"%c", c);

// 返回C语言中的字符串

const char *s = [@"abc" UTF8String];

NSLog(@"%s", s);

}

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

{

@autoreleasepool {

other();

}

return 0;

}


3.NSMutableString可变字符串的使用

//

// main.m

// Foundation5-NSMutableString

//

// Created by mj on 13-4-5.

// Copyright (c) 2013年 itcast. All rights reserved.

//

#import <Foundation/Foundation.h>

#pragma mark 可变字符串的创建

void stringCreate() {

// 预先分配10个字数的存储空间

NSMutableString *str = [[NSMutableString alloc] initWithCapacity:10];

// 设置字符串内容

[str setString:@"1234"];

// 拼接一个字符串

[str appendString:@"567"];

// 拼接字符串

[str appendFormat:@"age is %i and height is %.2f", 27, 1.55f];

// 替换字符串

NSRange range = [str rangeOfString:@"height"];

//NSRange range = NSMakeRange(7, 3);

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

// 插入字符串

[str insertString:@"abc" atIndex:2];

// 删除字符串

range = [str rangeOfString:@"age"];

[str deleteCharactersInRange:range];

NSLog(@"%@", str);

// 释放对象

[str release];

}

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

{

@autoreleasepool {

stringCreate();

}

return 0;

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: