//
// main.m
// 字符串截取 #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { NSString *str = @"<head>小码哥</head>";
/*
// NSRange : 位置/长度
// NSRange range = {6, 3};
// NSRange range;
// range.location = 6;
// range.length = 3;
// 只要是OC提供的结构体, 一般都可以使用NSMakeXXX来创建
// NSRange range = NSMakeRange(6, 3);
*/ // 1.动态获取截取的起始位置
NSUInteger location = [str rangeOfString:@">"].location + ;
// 2.动态获取截取的长度
// 注意:rangeOfString是从左至右的开始查找, 只要找到就不找了
// NSUInteger length = [str rangeOfString:@"<" options:NSBackwardsSearch].location - location; 从后向前找,
NSUInteger length = [str rangeOfString:@"</"].location - location;
NSLog(@"location = %lu, length = %lu", location, length);
NSRange range = NSMakeRange(location, length);
NSString *newStr = [str substringWithRange:range];
NSLog(@"str = %@", str);
NSLog(@"newStr = %@", newStr); NSString *temp = @"abcdefa";
NSRange range =[temp rangeOfString:@"a" options:NSBackwardsSearch];
NSLog(@"%lu", range.location); // 从什么地方开始截取, 一直截取到最后
NSString *newStr = [str substringFromIndex:];
NSLog(@"newStr = %@", newStr);
// 从开头开始截取, 一直截取到什么位置
NSString *newStr = [str substringToIndex:];
NSLog(@"newStr = %@", newStr); /*
<head>小码哥</head> --> 小码哥</head> --> 小码哥
<head>小码哥</head> --> <head>小码哥 --> 小码哥
*/
NSLog(@"str = %@", str);
NSUInteger location = [str rangeOfString:@">"].location + ;
NSString *newStr = [str substringFromIndex:location];
NSLog(@"newStr = %@", newStr); location = [newStr rangeOfString:@"</"].location;
// 改变了指针的指向, 并不是修改了原来的字符串
newStr = [newStr substringToIndex:location];
NSLog(@"newStr = %@", newStr); return ;
}
//
// main.m
// 字符串替换 #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) {
/*
// 需求: 将&符号替换为/
NSString *str = @"http:&&www.520it.com&img&lnj.gif"; // OccurrencesOfString: 要替换谁
// withString: 用谁替换
NSString *newStr = [str stringByReplacingOccurrencesOfString:@"&" withString:@"/"];
NSLog(@"newStr = %@", newStr); // 1.去除空格 2.将&替换为/
NSString *str = @" http: &&www. 520it.com &img&lnj.gif ";
// 1.去除空格
NSString *newStr = [str stringByReplacingOccurrencesOfString:@" " withString:@""];
NSLog(@"newStr = |%@|", newStr);
NSString *newStr2 = [newStr stringByReplacingOccurrencesOfString:@"&" withString:@"/"];
NSLog(@"newStr2 = |%@|", newStr2); */ // 3.替换首尾 NSString *str1 = @" http:&&www.520it.com&img&lnj.gif ";
NSString *str = @"HTTP://www.520it.com/img/LNJ.GIF"; NSCharacterSet *set1 = [NSCharacterSet whitespaceCharacterSet];
NSString *newStr1 = [str stringByTrimmingCharactersInSet:set1]; NSCharacterSet *set = [NSCharacterSet uppercaseLetterCharacterSet];
NSString *newStr = [str stringByTrimmingCharactersInSet:set]; //首尾大小写去掉了
NSLog(@"newStr = |%@|", newStr); return ;
}
//
// main.m
// 字符串与路径 #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { NSString *str = @"User/lnj/Desktop/lnj.txt.jpg";
// 1.判断是否是绝对路径
// 其实本质就是判断字符串是否以/开头
if([str isAbsolutePath]) //no
{
NSLog(@"是绝对路径");
}else{
NSLog(@"不是绝对路径");
} // 2.获取文件路径中的最后一个目录
// 本质就是获取路径中最后一个/后面的内容 NSString *newStr = [str lastPathComponent];
NSLog(@"%@", newStr); //lnj.txt.jpg // 3.删除文件路径中的最后一个目录 // 本质就是删除最后一个/后面的内容, 包括/也会被删除
NSString *newStr1 = [str stringByDeletingLastPathComponent];
NSLog(@"%@", newStr1); //User/lnj/Desktop // 4.给文件路径添加一个目录
// 本质就是在字符串的末尾加上一个/ 和指定的内容
// 注意: 如果路径后面已经有了/, 那么就不会添加了
// 如果路径后面有多个/, 那么会自动删除多余的/, 只保留一个
NSString *newStr2 = [str stringByAppendingPathComponent:@"xmg"];
NSLog(@"%@", newStr2); //User/lnj/Desktop/lnj.txt.jpg/xmg // 5.获取路径中文件的扩展名
// 本质就是从字符串的末尾开始查找., 截取第一个.后面的内容
NSString *newStr3 = [str pathExtension];
NSLog(@"%@", newStr3); //jpg // 6.删除路径中文件的扩展名
// 本质就是从字符串的末尾开始查找.,删除第一个.和.后面的内容
NSString *newStr4 = [str stringByDeletingPathExtension];
NSLog(@"%@", newStr4); //User/lnj/Desktop/lnj.txt // 7.给文件路径添加一个扩展名
// 本质就是在字符串的末尾加上一个.和指定的内容
NSString *newStr5 = [str stringByAppendingPathExtension:@"jpg"];
NSLog(@"%@", newStr5); //User/lnj/Desktop/lnj.txt.jpg.jpg return ;
}
//
// main.m
// 字符串的转换 #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { // NSString *str = @"abc"; // 1.将字符串转换为大写
NSString *newStr = [str uppercaseString];
NSLog(@"%@", newStr);
// 2.将字符串转换为小写
NSString *newStr2 = [newStr lowercaseString];
NSLog(@"%@", newStr2);
// htpp://www.520it.com/img/lnj.GIF; // 3.将字符串的首字符转换为大写
NSString *newStr = [str capitalizedString];
NSLog(@"%@", newStr); // 4.字符串与基本数据类型的转换
NSString *str1 = @"";
NSString *str2 = @"";
// str1 + str2; // 错误
int value1 = [str1 intValue];
int value2 = [str2 intValue];
NSLog(@"sum = %i", value1 + value2); // 注意: 如果不是int,double,float,bool,integer,longlong这些类型就不要乱用
NSString *str3 = @"abc";
int value3 = [str3 intValue];
NSLog(@"value3 = %i", value3); // 5.C语言字符串和OC字符串之间的转换
char *cStr = "lnj";
NSString *str = [NSString stringWithUTF8String:cStr];
NSLog(@"str = %@", str); NSString *newStr = @"lmj";
const char *cStr2 = [newStr UTF8String];
NSLog(@"cStr2 = %s", cStr2); return ;
}

oc68--NSString的更多相关文章

  1. NSString属性什么时候用copy,什么时候用strong?

           我们在声明一个NSString属性时,对于其内存相关特性,通常有两种选择(基于ARC环境):strong与copy.那这两者有什么区别呢?什么时候该用strong,什么时候该用copy呢 ...

  2. iOS UIAlertController跟AlertView用法一样 && otherButtonTitles:(nullable NSString *)otherButtonTitles, ... 写法

    今天写弹出框UIAlertController,用alertView习惯了,所以封装了一下,跟alertView用法一样,不说了,直接上代码: 先来了解一下otherButtonTitles:(nul ...

  3. 【去除NSString 字符串中的空格换行符】

    @interface NSString (DeletWhiteSpace) // 返回一个去掉前后空格的字符串或者下划线,如果自己是一个nil 返回@“” - (NSString *)trimming ...

  4. NSString 的常用操作

    NSString *testStr01=@"HelloWord"; NSString *testStr02=[testStr01 substringToIndex:];//取头(从 ...

  5. 时间戳转化为日期TimeStamp转NSDate转NSString

    //时间戳处理 NSInteger time = [self.album.updatedAt integerValue] / 1000; NSNumber *timer = [NSNumber num ...

  6. iOS - Json解析精度丢失处理(NSString, Double, Float)

    开发中处理处理价格金额问题, 后台经常返回float类型, 打印或转成NSString都会有精度丢失问题, 因此使用系统自带的NSDecimalNumber做处理, 能解决这问题:经过测试其实系统NS ...

  7. iOS NSString中的搜索方法rangeOfString

    NSString *str = @"your://aaa?backscheme=my"; //在str中查找“backscheme=”,并返回一个NSRange类型的值,我们可以通 ...

  8. NSString相关操作

    //创建一个字符串对象 NSString * str_1 = @"Hello"; //字面量方法 ; NSString * str_2 = [NSString stringWith ...

  9. NSString 和NSData 转换

    NSString 转换成NSData 对象 NSData* xmlData =[@"testdata" dataUsingEncoding:NSUTF8StringEncoding ...

  10. NSString 初始化方法的内存比较

    NSString *str1 = @"hello"; NSString *str2 = @"hello"; NSString *str3 = [NSString ...

随机推荐

  1. POJ_1163_The triangle

    The Triangle Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 40079   Accepted: 24144 De ...

  2. JAVA基础——Date和Calendar类

    1计算某一月份的最大天数 Calendar time=Calendar.getInstance(); time.clear(); time.set(Calendar.YEAR,year); //yea ...

  3. 2019西安多校联训 Day4

    T1 大水题!!难度简单,显然的贪心策略即可,but... 思路:首先我们按与i点作战后活下来的士兵排序,然后 若当前剩余兵力足够直接减掉战斗死亡人数,如果不够就加 够再打它,但是!我们在考完试观察测 ...

  4. Loj #6000.「 网络流 24 题 」搭配飞行员

    解题思路 考虑如何建模. 既然是网络流,那么肯定要有源点和汇点.而这个题目并没有什么明显的源点和汇点. 想一想,如果一个飞机能够起飞的话,那么必定有一对可以配对的正副驾驶员.也就是说一条曾广路能够上必 ...

  5. PHP 计数排序

    计数排序不是基于比较的排序算法,其核心在于将输入的数据值转化为键存储在额外开辟的数组空间中. 作为一种线性时间复杂度的排序,计数排序要求输入的数据必须是有确定范围的整数. 算法描述 找出待排序的数组中 ...

  6. Python 实现批量查询IP并解析为归属地

    一.背景: 最近工作中做了一个小功能,目的是为了分析注册用户区域分布和订单的区域分布情况.所以需要将其对应的IP信息解析为归属地,并同步每天同步更新.线上跑起来效率还是有优化的空间,优化的方向:在调用 ...

  7. Java MyBatis 插入数据库返回主键--insertSelective这样就不用每次到数据库里面查询了

    insertSelective---Java MyBatis 插入数据库返回主键--insertSelective这样就不用每次到数据库里面查询了 https://www.cnblogs.com/xi ...

  8. SGU 485 Arrays

    485. Arrays Time limit per test: 1.75 second(s)Memory limit: 262144 kilobytes input: standardoutput: ...

  9. [USACO1.2]挤牛奶Milking Cows

    题目描述 三个农民每天清晨5点起床,然后去牛棚给3头牛挤奶.第一个农民在300秒(从5点开始计时)给他的牛挤奶,一直到1000秒.第二个农民在700秒开始,在 1200秒结束.第三个农民在1500秒开 ...

  10. 单例模式解决RabbitMQ超出最大连接问题

    今天在项目稳定性测试过程中遇到一个情景:通过工具jMeter一直请求消息转发服务器,消息转发服务器再向rabbitMQ发送数据,在这期间出现了问题.MQ意外宕机. 1. 查看rabbitMQ管理界面. ...