iOS NSString用法大全

1、字符串的初始化

-(void)initStringFun{
  //1、使用Unicode数值数组转化成字符串
  unichar data[6] = {97,98,99,100,101,102};
  NSString * string = [[NSString alloc] initWithCharacters:data length:6];
  NSLog(@"string = %@",string);
  NSString * str = [NSString stringWithCharacters:data length:6];
  NSLog(@"str = %@",str);

 //2、将c风格字符串转NSString对象
 char * cStr = "hello,iOS";
 NSString * cString = [[NSString alloc] initWithUTF8String:cStr];
 NSLog(@"cString = %@",cString);

  //将oc字符串转为c字符串
  const char * strToC = [cString UTF8String];
  NSLog(@"strToC = %s",strToC);

}

2、字符串的常用功能

-(void)commonFunction{
  //1、追加字符串
  NSString * str = @"Hello";
  NSString * book = @",book";
  NSString * strBook = [str stringByAppendingString:book];
  NSLog(@"str = %@",str);
  NSLog(@"strBook = %@",strBook);

  //2、追加带变量的字符串
  NSString * fStr = @"Hello";
  NSString * formatStr = [fStr stringByAppendingFormat:@"%@Book",@"Good"];
  NSLog(@"fStr = %@",fStr);
  NSLog(@"formatStr = %@",formatStr);

  //3、字符串的截取
  NSString * string = @"hello,this is a good book";
  NSString * subStr1 = [string substringToIndex:10];//0-10的子字符串
  NSString * subStr2 = [string substringFromIndex:10];//10-末尾的子字符串
  NSString * subStr3 = [string substringWithRange:NSMakeRange(2, 3)];//2开始的3个字符长度的字符串
  NSLog(@"subStr1 = %@",subStr1);
  NSLog(@"subStr2 = %@",subStr2);
  NSLog(@"subStr3 = %@",subStr3);

  //4、子字符串所在位置及长度
  NSString * mainString = @"hello,world";
  NSString * subStr = @"world";
  NSRange range = [mainString rangeOfString:subStr];
  NSLog(@"range.location = %ld,range,length = %ld",range.location,range.length);

  //5、字符串统一转大小写
  NSString * smallBigStr = @"Hello,World";
  NSString * smallStr = [smallBigStr lowercaseString];
  NSString * bigStr = [smallBigStr uppercaseString];
  NSLog(@"smallStr = %@",smallStr);
  NSLog(@"bigStr = %@",bigStr);

  //6、字符串前后缀
  NSString * preString = @"hello,world";
  BOOL hasPre = [preString hasPrefix:@"hello"];
  NSLog(@"hasPre = %d",hasPre);
  NSString * sufString = @"hello,world";
  [sufString hasSuffix:@"world"];
  NSLog(@"sufString = %d",hasPre);

  //7、字符串长度
  NSString * lengthStr = @"hello,world";
  NSLog(@"lengthStr.length = %ld",lengthStr.length);

  //8、字符串中的字符
  NSString * charStr = @"hello,world";
  unichar c = [charStr characterAtIndex:0];
  NSLog(@"c = %c",c);

  //9、字符串的比较
  NSString * compareStr1 = @"hello";
  NSString * compareStr2 = @"world";
  NSComparisonResult result = [compareStr1 compare:compareStr2];
  NSLog(@"result = %d",result);

  BOOL isEqual = [compareStr1 isEqualToString:compareStr2];
  NSLog(@"isEqual = %d",isEqual);

  //10、字符串的分割
  NSString * sepStr = @"hello-world";
  NSArray * setArray = [sepStr componentsSeparatedByString:@"-"];
  NSLog(@"setArray = %@",setArray);

  NSCharacterSet * charSet = [NSCharacterSet characterSetWithCharactersInString:@"-o"];
  NSArray * array = [sepStr componentsSeparatedByCharactersInSet:charSet];
  NSLog(@"array = %@",array);
}

3、可变字符串

-(void)mutableStringFun{
  NSMutableString * mString = [[NSMutableString alloc] initWithString:@"hello"];
  //1、追加字符串
  [mString appendString:@",book"];
  NSLog(@"mString = %@",mString);

  //2、追加带变量的字符串
  [mString appendFormat:@".%@ Good Book",@"This Is A"];
  NSLog(@"mString = %@",mString);

  //3、删除指定位置字符
  [mString deleteCharactersInRange:NSMakeRange(0, 6)];
  NSLog(@"mString = %@",mString);

  //4、替换指定位置字符
  [mString replaceCharactersInRange:NSMakeRange(0, 6) withString:@"你好"];
 NSLog(@"mString = %@",mString);

  //5、在指定位置插入字符
  [mString insertString:@"你好" atIndex:7];
  NSLog(@"mString = %@",mString);

  //6、覆盖字符串
  [mString setString:@"你好,世界"];
  NSLog(@"mString = %@",mString);


}

4、其它方法

//将int类型 转为16进制的字符串1
-(void)hexStringFromNum{
  int num = 16;
  NSString *hexString = [NSString stringWithFormat:@"%@",[[NSString alloc] initWithFormat:@"%1x",num]];
  NSLog(@"hexString = %@",hexString);
}

//将int类型 转为16进制的字符串2(待验证)
-(void)longlongToHexStr{
  NSInteger value = 16;
  int len = 2;
  char ASSICCHAR[] = "0123456789ABCDEF";;
  char resultBuffer[len];
  for (int i = 0; i < len; i++) {
      resultBuffer[len - i - 1] = ASSICCHAR[(value >> (i * 4)) & 0x0F];
  }
  NSString * hexString = [NSString stringWithCString:resultBuffer encoding:NSASCIIStringEncoding];
  NSLog(@"hexString = %@",hexString);
}

//字典转为json格式字符串
-(NSString*)jsonStringFromDict{
  NSDictionary * dict = @{@"1":@"test1",
                        @"2":@"test3"};
  NSData * mData = [NSJSONSerialization dataWithJSONObject:dict options:NSJSONWritingPrettyPrinted error:nil];
  NSString * dictString = [[NSString alloc] initWithData:mData encoding:NSUTF8StringEncoding];
 NSLog(@"dictString = %@",dictString);
  return dictString;
}
//将json格式字符串转为字典

-(NSDictionary *)parseJSONStringToNSDictionary{
  NSString * JSONString = [self jsonStringFromDict];
  //将字符串转成二进制数据
  NSData *JSONData = [JSONString dataUsingEncoding:NSUTF8StringEncoding];
  //利用系统自带的JSON解析,解析成字典格式
  NSDictionary *responseJSON = [NSJSONSerialization JSONObjectWithData:JSONData options:NSJSONReadingMutableLeaves error:nil];
  //将字典返回
  NSLog(@"responseJSON = %@",responseJSON);
  return responseJSON;
}

//去掉非数字字符
-(void)removeUnnumberChar{
  NSString * number = @"156-8888-8888";
  //invertedset:为翻转
  NSCharacterSet *setToRemove = [[ NSCharacterSet characterSetWithCharactersInString:@"0123456789"] invertedSet];
  NSArray * numArray = [number componentsSeparatedByCharactersInSet:setToRemove];
  NSLog(@"numArray = %@",numArray);
  NSString *phoneStr = [numArray componentsJoinedByString:@""];

}


//字符串与int类型互转
-(void)stringToInt{

  //数字转字符串
  int num = 12;
  NSString * intString = [NSString stringWithFormat:@"%d",num];
  NSLog(@"intString = %@",intString);

  //字符串转数字
  NSString * string = @"12";//会转为12;类似@”我“这样的非数字的字符串会转为0
  NSInteger stringInt = [string integerValue];
  NSLog(@"stringInt = %ld",stringInt);

}


//字符串与data互转
-(void)stringToData{
  //把字符串再转变为二进制流
  NSString * string = @"I have a dream";
  NSData * data=[NSMutableData dataWithData:[string dataUsingEncoding:NSUTF8StringEncoding]];
  NSLog(@"data = %@",data);

  //二进制流转变为字符串
  NSString * dataStr=[[NSMutableString alloc] initWithData:data encoding:NSUTF8StringEncoding];
 NSLog(@"dataStr = %@",dataStr);

}
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,686评论 6 492
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,668评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 158,160评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,736评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,847评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,043评论 1 291
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,129评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,872评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,318评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,645评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,777评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,470评论 4 333
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,126评论 3 317
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,861评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,095评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,589评论 2 362
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,687评论 2 351

推荐阅读更多精彩内容

  • Swift1> Swift和OC的区别1.1> Swift没有地址/指针的概念1.2> 泛型1.3> 类型严谨 对...
    cosWriter阅读 11,093评论 1 32
  • 文/唐妈 前情回顾:第十一天 沈文涛拽着身上那廉价的衣服,别扭的不行。这图案也太丑了吧?这款式也太low了吧?可是...
    唐妈阅读 15,320评论 145 335
  • 去海南之前,我们是那样意气风发、豪情万丈,踌躇满志地要逛遍海岛上的各种风景,沙滩呀、雨林呀、天涯海角呀,每一个都想...
    为爱阅读阅读 1,070评论 0 0