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反射机制的一种运用. 之所以 ...
随机推荐
- Matlab lugui
function [L,U,pv,qv] = lugui(A,pivotstrat) %LUGUI Gaussian elimination demonstration. % % LUGUI(A) s ...
- sql必知必会(第四版) 学习笔记一
温习一遍简单的sql语法,把自己掌握还不够的地方,做了些笔记.... 1 去重复关键词,distinct select distinct sname from student; 2 限制结果top的用 ...
- chrome调试工具常用功能整理(转)
Elements chrome devtools 中 Elements panel 是审查 dom 元素和 css 的, 可以实时修改 dom/css. windows: ctrl + shift + ...
- 浏览器操作html页面的width和height
原文:http://www.cnblogs.com/dengshunping/archive/2009/06/15/1503803.html IE中: document.body.clientWidt ...
- int指令(软件中断指令)
INT(软件中断指令)是CALL指令的一种特殊形式.call指令调用调用的子程序是用户程序的一部分,而INT指令调用的操作系统提供的子程序或者其他特殊的子程序. 中断服务子程序和标准过程的最大区别是 ...
- JFrame??
swing的三个基本构造块:标签.按钮.文本字段.但需要个地方安放他们,并希望用户如何处理他们.JFrame类就是解决这个问题————它是一个容器,允许程序员把其他组件添加到它里面,把它们组织起来,并 ...
- hql中or的用法(代替union)
hql中不支持union和unionAll关键字因为在查询出的结果集中无法进行排序.代替union起到相同作用的 是or关键字.在构造hql时考虑使用or代替union产生多个结果集的组合. 详解如下 ...
- Android 自定义shape圆形按钮
Shape的属性: solid 描述:内部填充 属性:android:color 填充颜色 size 描述:大小 属性: android:width 宽 android:height 高 gradie ...
- Android 开源控件系列_1
第一部分 个性化控件(View) 主要介绍那些不错个性化的View,包括ListView.ActionBar.Menu.ViewPager.Gallery.GridView.ImageView.Pro ...
- ConnectivityManager与检查网络连接的使用
1.ConnectivityManager的作用 ConnectivityManager主要管理和网络管理相关的操作 TelephonyManager则管理和手机.运营商等的相关信息 WifiMana ...