Foundation框架之NSString及其Mutable类型

目录

  • 概述
  • 对字符串的实用操作

拼接

拆分

字符串比较

是否包含某字符串

字数统计

大小写转换

  • 具体的方法参见API
  • 待研究

概述

对NSString的理解

对字符串的实用操作

拼接

NSString *combinedStr = [NSString stringWithFormat:@"%@%@",str0,str1];

注:本人比较倾向于使用这种方式做字符串的拼接,可扩展性强,当有新需求时只需要更改format里面的即可,增删比较方便

拆分

NSArray *strArrays = [str2 componentsSeparatedByString:@"str"];

NSArray *strArrays2 = [str2 componentsSeparatedByCharactersInSet:[NSCharacterSet characterSetWithCharactersInString:@"str"]];

字符串比较

不忽略大小写

[str isEqualToString:@"str"];

忽略大小写

[str caseInsensitiveCompare:@"str"] == NSOrderedSame

是否包含某字符串

不忽略大小写

NSRange range = [str rangeOfString:@"str"];

if(range.length>0){ //包含 }

忽略大小写

NSRange range = [str rangeOfString:@"str" options:NSCaseInsensitiveSearch];

if(range.length>0){ //包含 }

字数统计

字符总数

[str length];

某一字符串的个数(includeStr为查找的字符串)

实现方式一

NSArray *array = [str componentsSeparatedByString:includeStr];

NSUInteger sum = array.count - 1;

实现方式二

实现思路

每找到一个字符,下一次的寻找范围为先前找到的字符串下一位置开始到字符串末尾,循环寻找,直至没有找到或者到字符串末尾

+ (NSUInteger)string:(NSString *)str includeStr:(NSString *)includeStr{

  NSUInteger sum = 0;

  NSUInteger index = 0;

  NSRange range = [str rangeOfString:includeStr options:NSLiteralSearch range:NSMakeRange(0,[str length])];

  while(range.length > 0){

    sum += 1;

    index = range.location + range.length;

    //到字符末尾

    if(index >= [str length]){

      break;

    }

    range = [str rangeOfString:includeStr options:NSLiteralSearch range:NSMakeRange(index,[str length] - index)];  //注1

  }

  return sum;

}

注1

返回的NSRange的location为从字符串的头开始算起,而不是从index的位置开始算起

忽略大小写则只需要把两个地方的options参数更改成:NSCaseInsensitiveSearch

大小写转换

[str lowercaseString];

[str uppercaseString];

具体的方法参见API

待研究

根据字符串首字母进行排序

NSLocale

字符串的正则判断

Foundation框架之NSString及其Mutable类型的更多相关文章

  1. OC中Foundation框架之NSString、NSMutableString

    创建方式 )直接赋值 NSString *str =@"abc"; )创建对象 NSString *str2 = [[NSString alloc]init]; str2 =@&q ...

  2. 14.Object-C--浅谈Foundation框架字符串NSString 与NSMutableString

    OC的字符串时经常使用到的,今天我对于OC字符串做一个简单的总结,如果有错误之处,麻烦留言指正.感谢! NSString是一个不可变长度的字符串对象.表示它初始化以后,你不能改变该变量所分配的内存中的 ...

  3. [OC Foundation框架 - 4] NSString的导出

      void exportString() { NSString *str = @"Hello, 坑爹"; NSString *path = @"/Users/hello ...

  4. [OC Foundation框架 - 2] NSString 的创建

    A. 不可变字符串 void stringCreate() { //Don't need to release memory by this way NSString *str1 = @"S ...

  5. [OC Foundation框架 - 5] NSString的常用方法

             NSString *s1 = ";   1.比较 使用 == 号比较的是字符串地址 NSString *s4 = @"abcdefg"; NSStrin ...

  6. Foundation框架系列-NSString

    NSString OC字符串与C语言字符串转换 NSString *str = @"Hello world ! !"; // OC字符串 --> C语言字符串 char *c ...

  7. OC 知识:Foundation 框架及相关类详尽总结

    本文用来介绍Foundation框架的相关知识,以及Foundation框架所提供类的相关知识总结. 1. 框架介绍 框架是由很多类.方法.函数和文档按照一定的逻辑组织起来的集合,以使开发程序变得更加 ...

  8. Foundation框架之NSArray、NSDictionary、NSSet及其Mutable类型

    Foundation框架之NSArray.NSDictionary.NSSet及其Mutable类型 目录 概述——对Foundation框架集合类的理解 NSArray NSDictionary N ...

  9. Foundation框架-NSString和NSMutableString

    可变与不可变的字符串 --1-- Foundation框架介绍 1.1 框架介绍 --2-- NSString 2.1 NSString介绍及使用 2.2 NSString创建方式  2.3 从文件中 ...

随机推荐

  1. 笔记:C语言数据类型在32位与64位机器上的字节数

    读<深入理解计算机系统> 第二章 信息的表示与处理 32位与64位的典型值,单位字节 声明 32位机器 64位机器 char 1 1 short int int 4 4 long int ...

  2. iframe和frame的区别

    在同时有frame和Iframe的一个窗口里frame最大可以做个frameset的儿子,Iframe最大也只能做到frameset的孙子.frame的布局限于几种,Iframe想放哪里放哪里.fra ...

  3. Codeforces Educational Codeforces Round 15 E - Analysis of Pathes in Functional Graph

    E. Analysis of Pathes in Functional Graph time limit per test 2 seconds memory limit per test 512 me ...

  4. java 的开源wiki维基系统

    几乎所有 维基 系统的对比网址:   http://www.wikimatrix.org/ XWiki,    第二代wiki. 它里面使用的 velocity 模板语言对j2ee开发相当有参考价值, ...

  5. mac机器下远程仓库添加完毕之后,却无法上传应有的内容。

    Permission denied (publickey). fatal: Could not read from remote repository. Please make sure you ha ...

  6. Swift 可选值(Optional Values)介绍

    Optional的定义 Optional也是Objective-C没有的数据类型,是苹果引入到Swift语言中的全新类型,它的特点就和它的名字一样:可以有值,也可以没有值,当它没有值时,就是nil.此 ...

  7. HDU 5776 sum (前缀和)

    题意:给定 n 个数,和 m,问你是不是存在连续的数和是m的倍数. 析:考虑前缀和,如果有两个前缀和取模m相等,那么就是相等的,一定要注意,如果取模为0,就是真的,不要忘记了,我当时就没记得.... ...

  8. 判断时间大小 yyyy-MM-dd 格式

    // yyyy-MM-dd function bigThanToday(someDate){ var date = new Date(); var dateStr = date.getFullYear ...

  9. Android 通过ViewFlipper实现广告轮播功能并可以通过手势滑动进行广告切换

    为了实现广告轮播功能,在网上找了很多方法,有的效果很好,但是代码太麻烦,并且大多是用的viewpager,总之不是很满意. 于是看了一下sdk有个控件是ViewFlipper,使用比较方便,于是尝试了 ...

  10. DNS与DNS劫持原理、IP、域名、服务器访问浅讲

    我们都知道,平常我们所访问的网站,都是与服务器进行数据交互的.但是,浏览器和服务器是分处于不同的计算机上的,那他们是怎样进行通信的呢?今天,我们就来粗浅地聊一聊.不涉及很深的技术原理,只讲大概的流程. ...