//
// 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. jstree中json data 的生成

       jstree中json data 的生成 jstree官网上给出的json数据格式是这样的: <span style="font-size:14px;">// A ...

  2. 在添加新内容时,creatat没有数据

    首先找到controller中的add方法,然后是执行了Service.insert()方法 然后找到service对应的impl方法, impl方法中的 public void insert(Cus ...

  3. php第二十九节课

    文件 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.o ...

  4. Intellij idea 生成for循环代码块

    itar 生成array for代码块 for (int i = 0; i < array.length; i++) { = array[i]; } itco 生成Collection迭代 fo ...

  5. Hadoop Mapreduce 中的Partitioner

    Partitioner的作用的对Mapper产生的中间结果进行分片,以便将同一分组的数据交给同一个Reduce处理,Partitioner直接影响Reduce阶段的负载均衡. MapReduce提供了 ...

  6. .NET-高并发及限流方案

    前言:高并发对我们来说应该都不陌生,特别想淘宝秒杀,竞价等等,使用的非常多,如何在高并发的情况下,使用限流,保证业务的进行呢.以下是一个实例,不喜勿喷! 总体思路: 1.  用一个环形来代表通过的请求 ...

  7. clipboard.js兼容ios

    再使用clipboard.js做项目时,项目需求是在非input,button等可以点击的标签(span,p,div)上实现点击来复制内容,在PC端和移动端android没问题,但是到了ios毫无反应 ...

  8. 闸门机制(Gate Mechanism)

    本系列文章由 @yhl_leo 出品,转载请注明出处. 文章链接: http://blog.csdn.net/yhl_leo/article/details/51728107 神经网络中常说的闸门机制 ...

  9. python函数基础:嵌套函数、作用域、匿名函数、高阶函数、递归函数

    嵌套函数: 1. 函数内部可以再定义函数 2. 函数只有被调用之后才会执行 看如下代码: age = 18 def func1(): age = 22 print(age) def func2(): ...

  10. java虚拟机(二)--垃圾收集器与内存分配策略

    1.判断对象是否存活的算法: 1.1.引用计数算法:给对象添加一个引用计数器,每当有一个地方引用他时,计数器+1,当引用失效时,计数器-1,任何时刻计数器为0的对象就是不可能再被引用的,但是他很难解决 ...