OC中的字符串:

  C中没有字符串类型,用字符数组和指针代替。

  OC中引入了字符串类型,它包括NSString 和 NSMutableString两种

  NSString是不可变的,已经初始化便不能更改;NSMutableString是可变的,可以对自己进行修改操作的。这类似于Java里的String和BufferString。

为什么NSString是不可变的,NSMutableString是可变的??

  因为NSString在内存的数据结构是List,它是有序排列,大小固定的;而NSMutableString在内存中的数据结构是链表,它“貌似”是随机分配位置的,然后首尾相指就行了。要给NSMutableString添加了新字符,无论这个新字符被分配到了哪儿,只要它指向最后一个字符就行了。

NSString字符串的初始化方法:

        //通过对象方法(动态方法)
NSString * str1 = [[NSString alloc]initWithUTF8String:"wang1"];
NSString * str2 = [[NSString alloc]initWithString:@"wang2"]; //通过类方法(静态方法)
NSString * str3 = [NSString stringWithUTF8String:"wang3"];
NSString *str4 =[NSString stringWithString:"wang4"];

NSString字符串常用方法:

//
// main.m
// NSStringTest
//
// Created by mac on 15-2-25.
// Copyright (c) 2015年 mac. All rights reserved.
// #import <Foundation/Foundation.h> int main(int argc, const char * argv[])
{ @autoreleasepool { NSString *str = @"wang1.avi"; //根据索引获取字符串元素
UniChar ch = [str characterAtIndex:];
NSLog(@"%c",ch); //字符串内容比较
BOOL tag = [str isEqualToString:@"wang1.mp4"];
NSLog(@"%i",tag);
if (tag==NO)
{
NSLog(@"butong");
}else
{
NSLog(@"xiangtong");
} //字符串大小比较
NSComparisonResult ret = [str compare:@"wang2.avi"];
if(ret==NSOrderedAscending) //wang1.avi到wang2.avi是增序的
{
NSLog(@"up");
}else if(ret==NSOrderedDescending)
{
NSLog(@"down");
}else
{
NSLog(@"equal");
} //查找子串的范围range(位置,长度)
NSRange range = [str rangeOfString:@"wang1"];
NSLog(@"%lu,%lu",range.location,range.length); //判断前后缀
BOOL tag1 = [str hasPrefix:@"wang"];
if (tag1==YES)
{
NSLog(@"是以wang为前缀");
} BOOL tag2 = [str hasSuffix:@"avi"];
if (tag2==YES)
{
NSLog(@"是以avi为后缀");
} //数组串转换成数字
NSString *intStr = @"";
NSString *floatStr = @"3.14";
int intNum = [intStr intValue];
float floatNum = [floatStr floatValue];
NSLog(@"_____________%f",intNum+floatNum);
NSLog(@"%i,%f",intNum,floatNum); //大小写转换
NSString *upperStr = [str uppercaseString]; //把wang1.avi转为大写WANG1.AVI
NSString *lowerStr = [upperStr lowercaseString]; //再把WANG1.AVI转为wang1.avi //字符串提取(获取子串)
NSString *subStr1 = [str substringFromIndex:]; //从索引5开始到结尾
NSLog(@"%@",subStr1); NSString *subStr2 = [str substringToIndex:]; //从开头到索引4
// NSRange range1;
// range1.location = 5;
// range1.length = 4;
NSRange range1 = NSMakeRange(, ); //注意:从格式就可以看出,NSMakeRange(5,4)并不是方法,它只是宏替换。
NSString *subStr3 = [str substringWithRange:range1];
NSLog(@"%@__%@",subStr2,subStr3); } return ;
}

NSMutableString字符串的常用方法:

  首先要说的时NSMutableString是继承于NSString的,所以NSString的所有方法都可以用于NSMutableString字符串。但NSMutableString不同之处是,它定义了很多可以最自己进行操作的方法:

//
// main.m
// NSMutableString
//
// Created by mac on 15-2-26.
// Copyright (c) 2015年 mac. All rights reserved.
// #import <Foundation/Foundation.h> int main(int argc, const char * argv[])
{ @autoreleasepool { //NSMutableString字符串不能这样创建
// NSMutableString * mutStr = @"wanger";
// NSMutableString * mutStr = [[NSMutableString alloc]initWithUTF8String:"wanger"]; NSMutableString * mutStr = [NSMutableString stringWithString:@"wang"];
NSString *str = [NSString stringWithUTF8String:".avi"]; //增(拼接)
[mutStr appendString:@".avi"];
// [mutStr appendFormat:@"%@",str];
[mutStr insertString:@"er" atIndex:];
NSLog(@"%@",mutStr); //删
NSRange range1 = NSMakeRange(, );
[mutStr deleteCharactersInRange:range1]; //改
[mutStr setString:@"wangyawen.avi"]; //重置可变字符串内存中的内容 //替换
NSRange range2 = NSMakeRange(, );
[mutStr replaceCharactersInRange:range2 withString:@"mp4"]; //替换 NSLog(@"%@",mutStr); }
return ;
}

---恢复内容结束---

QF——OC字符串的更多相关文章

  1. OC字符串常用函数

    创建一个字符串对象: NSstring * str1 = @"hello"; NSString * str = [[NSString alloc]initWithString:@& ...

  2. OC字符串的常用方法

    网上写的关于字符串常用方法的博客很多,这里我简单做了下总结!不喜勿喷哦! 一.创建字符串 #import <Foundation/Foundation.h> //NSString //创建 ...

  3. c语言字符串转OC字符串

    // 如果把c语言字符串转OC字符串,@(C字符串) char *c = "abc"; NSLog(@"%@", @(c));

  4. OC字符串与C语言字符串之间的相互转换

    1.C转OC字符串 const char *cString = "This is a C string"; // 动态方法 NSString *ocString1 = [[NSSt ...

  5. OC字符串NSString

    ========================== 面向对象编程进阶和字符串 ========================== Δ一.类的设计模式—单例 [单例]程序允许过程中,有且仅有一块内存 ...

  6. oc 字符串

    #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { ...

  7. OC字符串的一些常用的函数。

    )//获取字符串长度 NSUInteger len= str.length; () //通过指定索引返回对应的字符 unichar ch =[str characterAtIndex:]; ()//通 ...

  8. C 和 OC 字符串转换 NSString 和 char * 转换 const char* 与 char *

    #import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { char *s = "He ...

  9. QF——OC中的KVC,KVO

    KVC: (Key Value Coding) 键值编码 所谓KVC,其实就是不通过set和get方法访问对象属性,而是通过属性名字符串动态的去读取属性.KVC其实也是OC反射机制的一种运用. 之所以 ...

随机推荐

  1. 【奇偶剪枝】【HDU1010】Tempter of the Bone

    题意:输入一个n*m的迷宫,和一个T:可以在迷宫中生存的最大时间.S为起点,D为终点.并且,每个格子只能踩一次,且只能维持一秒,然后该块地板就会塌陷.所以你必须每秒走一步,且到D点时,所用时间为T. ...

  2. jvm莫名退出问题解决

    当jvm莫名退出,没有留下任何任何信息的时候,在centos的 /var/log/dmesg文件中,或许可以找到一些端倪

  3. UVA 11925 - Generating Permutations

    题意: 给出一个1到n的排列,给出操作顺序,使升序排列能变为所给排列. 分析: 正常冒泡排序的想法.如果前两个数,前面的大于后面的,则换(特例是n,1不能换).否则,就用2的逆操作,把最后的数放前面. ...

  4. 使用C#创建winform窗体,修改debugwen文件夹下exe应用程序的默认图标

    在做一个接口程序是遇到的问题,记录一下: 在解决方案资源管理器上,右击项目名称——属性——点击图标和清单右边的的按纽——去Debug文件夹中找到自己的图标,打开.然后保存.

  5. 01js高级_1

    <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...

  6. 解决UITableView数据没有充满屏幕时,显示多余的空白cell的问题

    #pragma mark 去除多余的线 -(void) clearExtrLine{ UIView *view = [[UIView alloc] init]; view.backgroundColo ...

  7. SSR服务端一键安装脚本

    支持新协议混淆,SSR服务端一键安装脚本   Shadowsocks-R 是项目 shadowsocks 的增强版,用于方便地产生各种协议接口.实现为在原来的协议外套一层编码和解码接口,不但可以伪装成 ...

  8. Ubuntu 13.04下安装Vmware tools 9.2.3

    更新13.04后 VmwareTools安装会出现三个问题 找不到generic kernel headers头文件 编译vmci出错 编译vmhgfs出错 第一个问题是系统的文件位置换了,而VMTO ...

  9. spring+hibernate

    添加注解时spring是添加在set方法上而hibernate是添加在get方法上 事务应该加在service层上,而不是加在dao层上,如果加在dao层上回滚的时候只能回滚一个dao的实现. 事务处 ...

  10. sencha touch 2.3 结合cordova 环境搭建

    sencha touch 2.3环境搭建必备工具 sencha touch 2.3 包sencha cmd 4.0以上JAVA JDK 1.7以上(注意JDK和JRE的区别)Ruby 1.9.3或更早 ...