QF——OC字符串
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字符串的更多相关文章
- OC字符串常用函数
创建一个字符串对象: NSstring * str1 = @"hello"; NSString * str = [[NSString alloc]initWithString:@& ...
- OC字符串的常用方法
网上写的关于字符串常用方法的博客很多,这里我简单做了下总结!不喜勿喷哦! 一.创建字符串 #import <Foundation/Foundation.h> //NSString //创建 ...
- c语言字符串转OC字符串
// 如果把c语言字符串转OC字符串,@(C字符串) char *c = "abc"; NSLog(@"%@", @(c));
- OC字符串与C语言字符串之间的相互转换
1.C转OC字符串 const char *cString = "This is a C string"; // 动态方法 NSString *ocString1 = [[NSSt ...
- OC字符串NSString
========================== 面向对象编程进阶和字符串 ========================== Δ一.类的设计模式—单例 [单例]程序允许过程中,有且仅有一块内存 ...
- oc 字符串
#import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { @autoreleasepool { ...
- OC字符串的一些常用的函数。
)//获取字符串长度 NSUInteger len= str.length; () //通过指定索引返回对应的字符 unichar ch =[str characterAtIndex:]; ()//通 ...
- C 和 OC 字符串转换 NSString 和 char * 转换 const char* 与 char *
#import <Foundation/Foundation.h> int main(int argc, const char * argv[]) { char *s = "He ...
- QF——OC中的KVC,KVO
KVC: (Key Value Coding) 键值编码 所谓KVC,其实就是不通过set和get方法访问对象属性,而是通过属性名字符串动态的去读取属性.KVC其实也是OC反射机制的一种运用. 之所以 ...
随机推荐
- TreeView(C#)无限目录树代码片段
#region 绑定客户树 protected void bindTreeView() { TreeView1.Nodes.Clear(); string userid = Session[" ...
- 【贪心+背包】【HDU2546】【饭卡】
饭卡 Time Limit: 5000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submiss ...
- Web--->>>Cookie与Session
1.cookie 1.cookie是存在客户端(浏览器)的进程内存中和客户端所在的机器硬盘上 2.cookie只能能够存储少量文本,大概4K大小 3.cookie是不能在不同浏览器之间共享 3.创建c ...
- WCF Test Client
WCF测试客户端(WCF Test Client)是一个用来测试WCF服务程序的调试工具,能够使开发WCF服务更加方便. 在Visual Studio之外打开WCF测试客户端有两种方法:第一种方法是到 ...
- beforefieldinit释义(2)
首先来看一段代码: using System; namespace BeforeFieldInit { internal class Foo { Foo(){ Console.WriteLine(&q ...
- Poem: Reserverd Words
Let this long package float, Goto private class if short. While protected with debugger case, Contin ...
- C++中的namespace
本文转载来自:http://blog.csdn.net/yao_zhuang/article/details/1853625 namespace中文意思是命名空间或者叫名字空间,传统的C++只有一个全 ...
- C++<algorithm>中sort的比较函数写法(转)
转自:http://www.wl566.com/biancheng/98907.html C++<algorithm>中sort的比较函数写法,有需要的朋友可以参考下. 定义排序函数: 方 ...
- CreateMutex() 、ReleaseMutex()
功能: CreateMutex() 用于有独占要求的程序 (在其进程运行期间不允许其他使用此端口设备的程序运行,或不允许同名程序运行). 比如运行金山词霸时,一次只能运行一个实例,当运行第二个实例时, ...
- PHP获取毫秒时间戳
我们知道,PHP中time()函数获取的时间戳,其单位是秒. 但是,前端JS获取的时间戳,单位是毫秒. 那么,在实际应用中,如何将JS和PHP的时间戳统一,即如何使用PHP获取毫秒时间戳呢,请看下例: ...