//
// QFString.h
// OC6_字符串练习
//
// Created by zhangxueming on 15/6/10.
// Copyright (c) 2015年 zhangxueming. All rights reserved.
// #import <Foundation/Foundation.h> @interface QFString : NSObject //比如输入 @"abcdef"输出@"fedcba"
+(NSString *)reveserString:(NSString *)srcStr;
//压缩字符串
//比如输入@"aaabbbcceaa" 输出@"3a3b2c1e2a"
+(NSString *)firstContinueString:(NSString *)string; +(NSString *)compressString:(NSString *)srcStr; //对字符串按字母顺序进行排序
//比如输入@"aczabczab" 输出@"aaabbcczz"
+(NSString*)sortString:(NSString*)srcStr; //将原字符串进行小写转大写,大写转小写
//比如输入 @"aBCdEfGA" 输出 @"AbcDeFga"
+(NSString *)reveserCharacters:(NSString*)srcStr; // 替换字符串srcStr中从startKey到endKey之间的字符串//返回结果
//比如输入srcStr=@"abcdaabbccdef" startKey=@"da" endKey=@"cde" 输出 @"abbc"
+(NSString *)replaceString:(NSString *)srcStr betweenStartKey:(NSString* )startKey andEndKey:(NSString*)endKey; // 返回字符串srcStr中出现子串findStr的次数
//helloworldhelloworldhello hello
+(NSInteger)subStringCount:(NSString*)srcStr findStr:(NSString*)findStr; +(void)testString; @end
//
// QFString.m
// OC6_字符串练习
//
// Created by zhangxueming on 15/6/10.
// Copyright (c) 2015年 zhangxueming. All rights reserved.
// #import "QFString.h" @implementation QFString //@"hello world"
+ (NSString *)reveserString:(NSString *)srcStr
{
NSUInteger len = [srcStr length];
NSString *dstString = @"";
for (NSInteger i=len-; i>=; i--) {
unichar ch = [srcStr characterAtIndex:i];
dstString = [dstString stringByAppendingFormat:@"%C", ch];
}
return dstString;
}
//@"aaabbcccccdddd"
+ (NSString *)firstContinueString:(NSString *)string
{
NSInteger len = [string length];
NSInteger i;
for (i=; i<len; i++) {
unichar ch1= [string characterAtIndex:i-];
unichar ch2= [string characterAtIndex:i];
if (ch1 != ch2) {
break;
}
}
return [string substringToIndex:i];
}
//@"aaabbcccccdddd" --> 3a2b5c4d @""
+ (NSString *)compressString:(NSString *)srcStr
{
NSString *dstString = @"";
NSString *tempStr = srcStr;
while ([tempStr length]) {
NSString *subString = [self firstContinueString:tempStr];
dstString = [dstString stringByAppendingFormat:@"%ld%C",[subString length], [subString characterAtIndex:]];
tempStr = [tempStr substringFromIndex:[subString length]];
}
return dstString;
} + (NSString *)sortString:(NSString *)srcStr
{
NSInteger len = [srcStr length];
for (NSInteger i=; i<len-; i++) {
for (NSInteger j=; j<len-i-; j++) {
unichar ch1 = [srcStr characterAtIndex:j];
unichar ch2 = [srcStr characterAtIndex:j+];
if (ch1 > ch2) {
srcStr = [srcStr stringByReplacingCharactersInRange:NSMakeRange(j, ) withString:[NSString stringWithFormat:@"%C", ch2]];
srcStr = [srcStr stringByReplacingCharactersInRange:NSMakeRange(j+, ) withString:[NSString stringWithFormat:@"%C", ch1]];
}
}
}
return srcStr;
} //将原字符串进行小写转大写,大写转小写
//比如输入 @"aBCdEfGA" 输出 @"AbcDeFga"
//abcdefga
+(NSString *)reveserCharacters:(NSString*)srcStr
{
NSString *dstString = [srcStr lowercaseString];
for (NSInteger i=; i<[dstString length]; i++) {
unichar ch = [dstString characterAtIndex:i];
if ( ch == [srcStr characterAtIndex:i]) {
dstString = [dstString stringByReplacingCharactersInRange:NSMakeRange(i, ) withString:[NSString stringWithFormat:@"%C", (unichar)(ch-)]];
}
}
return dstString;
} +(NSString *)replaceString:(NSString *)srcStr betweenStartKey:(NSString* )startKey andEndKey:(NSString*)endKey
{ return nil;
} // 返回字符串srcStr中出现子串findStr的次数
//worldhelloworldhello hello
+(NSInteger)subStringCount:(NSString*)srcStr findStr:(NSString*)findStr
{
NSInteger cnt = ;
NSString *tempString = srcStr;
NSRange range ;
while ((range = [tempString rangeOfString:findStr],range.location != NSNotFound)) {
cnt++;
tempString = [tempString substringFromIndex:range.location+range.length];
}
return cnt;
} + (void)testString
{
NSLog(@"%@", [self reveserString:@"hello world"]);
NSLog(@"%@", [self firstContinueString:@"aaabbcccccdddd"]);
NSLog(@"%@", [self compressString:@"aaabbcccccdddd"]);
NSLog(@"%@", [self sortString:@"oiuytredfghjk"]);
NSLog(@"%@", [self reveserCharacters:@"ASDDsdfsfAFAFA"]);
NSLog(@"cnt = %li", [self subStringCount:@"helloworldhelloworldhello" findStr:@"hello"]);
}
@end
//
// main.m
// OC6_字符串练习
//
// Created by zhangxueming on 15/6/10.
// Copyright (c) 2015年 zhangxueming. All rights reserved.
// #import <Foundation/Foundation.h>
#import "QFString.h"
//4. 现有字符串@"When I was young, I loved a girl on neighbor class."要求不通过点数,从was提取到girl。 //7. 现有字符串@"When I was young, I loved a girl on neighbor class. "从young到girl,改成@"teacher, I rather teaching the students int main(int argc, const char * argv[]) {
@autoreleasepool {
#if 0
NSString *str1 = @"When I was young, I loved a girl on neighbor class.";
NSRange range1 = [str1 rangeOfString:@"was"];
NSRange range2 = [str1 rangeOfString:@"girl"];
if (range1.location != NSNotFound && range2.location != NSNotFound && range2.location > range1.location) {
NSString *subString = [str1 substringWithRange:NSMakeRange(range1.location, range2.location-range1.location+range2.length)];
NSLog(@"subString = %@", subString);
} NSRange range3 = [str1 rangeOfString:@"young"];
if (range3.location != NSNotFound && range2.location != NSNotFound && range2.location > range3.location) {
NSString *str2 = [str1 stringByReplacingCharactersInRange:NSMakeRange(range3.location, range2.location-range3.location+range2.length) withString:@"teacher, I rather teaching the students"];
NSLog(@"str2= %@", str2);
} #endif
[QFString testString];
}
return ;
}

OC6_字符串练习的更多相关文章

  1. Python高手之路【六】python基础之字符串格式化

    Python的字符串格式化有两种方式: 百分号方式.format方式 百分号的方式相对来说比较老,而format方式则是比较先进的方式,企图替换古老的方式,目前两者并存.[PEP-3101] This ...

  2. 测试一下StringBuffer和StringBuilder及字面常量拼接三种字符串的效率

    之前一篇里写过字符串常用类的三种方式<java中的字符串相关知识整理>,只不过这个只是分析并不知道他们之间会有多大的区别,或者所谓的StringBuffer能提升多少拼接效率呢?为此写个简 ...

  3. java中的字符串相关知识整理

    字符串为什么这么重要 写了多年java的开发应该对String不陌生,但是我却越发觉得它陌生.每学一门编程语言就会与字符串这个关键词打不少交道.看来它真的很重要. 字符串就是一系列的字符组合的串,如果 ...

  4. JavaScript 字符串实用常操纪要

    JavaScript 字符串用于存储和处理文本.因此在编写 JS 代码之时她总如影随形,在你处理用户的输入数据的时候,在读取或设置 DOM 对象的属性时,在操作 Cookie 时,在转换各种不同 Da ...

  5. Java 字符串格式化详解

    Java 字符串格式化详解 版权声明:本文为博主原创文章,未经博主允许不得转载. 微博:厉圣杰 文中如有纰漏,欢迎大家留言指出. 在 Java 的 String 类中,可以使用 format() 方法 ...

  6. Redis的简单动态字符串实现

    Redis 没有直接使用 C 语言传统的字符串表示(以空字符结尾的字符数组,以下简称 C 字符串), 而是自己构建了一种名为简单动态字符串(simple dynamic string,sds)的抽象类 ...

  7. ASP.NET加密和解密数据库连接字符串

    大家知道,在应用程序中进行数据库操作需要连接字符串,而如果没有连接字符串,我们就无法在应用程序中完成检索数据,创建数据等一系列的数据库操作.当有人想要获取你程序中的数据库信息,他首先看到的可能会是We ...

  8. Javascript正则对象方法与字符串正则方法总结

    正则对象 var reg = new Regexp('abc','gi') var reg = /abc/ig 正则方法 test方法(测试某个字符串是否匹配) var str = 'abc123'; ...

  9. 微信小程序中利用时间选择器和js无计算实现定时器(将字符串或秒数转换成倒计时)

    转载注明出处 改成了一个单独的js文件,并修改代码增加了通用性,点击这里查看 今天写小程序,有一个需求就是用户选择时间,然后我这边就要开始倒计时. 因为小程序的限制,所以直接选用时间选择器作为选择定时 ...

随机推荐

  1. msp430的两本书 电子版【worldsing笔记】

    msp430的两本书,pdf版 MSP430系列单片机接口_技术及系统设计实例 MSP430系列16位超低功耗单片机原理与应用 点击此处下载 ourdev_528863.pdf(文件大小:4.21M) ...

  2. 射频识别技术漫谈(14)——S50与S70存取控制【worldsing笔记】

    存取控制指符合什么条件才能对卡片进行操作. S50和S70的块分为数据块和控制块,对数据块的操作有"读"."写"."加值"."减值 ...

  3. C#基础系列(一)

    1.vs中F5(调试)和Ctrl + F5(直接运行不调试)的区别: Ctrl+F5是直接运行生成的程序,不进行重新编绎,所以运行起来比较快F5是重新编绎后再运行,这样可以在程序代码中设置断点跟踪来调 ...

  4. (原创)vagrant up 异常报错,出现 There was an error while executing `VBoxManage` 的解决方法

    最近在使用 vagrant homestead 时,不小心在虚拟机上使用了 exit 命令退出虚拟机,导致再使用 vagrant up 时出现以下错误: Bringing machine 'larav ...

  5. 【STL源码学习】细品vector

    第一节:vector简介 vector是一种典型的类模板,使用的时候必须进行实例化. vector的数据存储在数组上,支持随机访问迭代器,支持下标操作[]和at操作,支持手动扩容和自动容量增长. ve ...

  6. MySQL 子查询 EXISTS 和 NOT EXISTS

    MySQL EXISTS 和 NOT EXISTS 子查询 MySQL EXISTS 和 NOT EXISTS 子查询语法如下: SELECT ... FROM table WHERE EXISTS ...

  7. mysql数据库全局只读和会话只读问题解析

    对于系统的发布是经常有的事情,有些时候需要隔绝外界对数据库的更改但是还要求可以读取数据,对于mss sql 这个就是很简单,直接属性—>选项—>只读 ,但是对于mysql这是不同的,今天仔 ...

  8. php join函数使用,很是方便

    以前数组转换成用逗号隔开的字符串都是自己写一个数组,最后还要去除多余的一个逗号,好麻烦. 无意中发现join函数,原来一句话就可以了. $_array = array('a','b','c','d', ...

  9. Linux添加环境变量与GCC编译器添加INCLUDE与LIB环境变量

    对所有用户有效在/etc/profile增加以下内容.只对当前用户有效在Home目录下的.bashrc或.bash_profile里增加下面的内容:(注意:等号前面不要加空格,否则可能出现 comma ...

  10. 可视化swing界面编辑--转载

    原文地址:http://279234058.iteye.com/blog/2200122 今天发现了一个WindowBuilder插件,功能好强大,啊哈哈,从此告别手动编辑swing界面代码,直接像V ...