//
// 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-
1; i>=
0; 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=
1; i<len; i++
) {
unichar ch1= [
string characterAtIndex:i-
1];
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:
0]];
tempStr =
[tempStr substringFromIndex:[subString length]];
}
return dstString;
}
+ (NSString *)sortString:(NSString *
)srcStr
{
NSInteger len =
[srcStr length];
for (NSInteger i=
0; i<len-
1; i++
) {
for (NSInteger j=
0; j<len-i-
1; j++
) {
unichar ch1 =
[srcStr characterAtIndex:j];
unichar ch2 = [srcStr characterAtIndex:j+
1];
if (ch1 >
ch2) {
srcStr = [srcStr stringByReplacingCharactersInRange:NSMakeRange(j,
1) withString:[NSString stringWithFormat:
@"%C", ch2]];
srcStr = [srcStr stringByReplacingCharactersInRange:NSMakeRange(j+
1,
1) withString:[NSString stringWithFormat:
@"%C", ch1]];
}
}
}
return srcStr;
}
//将原字符串进行小写转大写,大写转小写
//比如输入 @"aBCdEfGA" 输出 @"AbcDeFga"
//abcdefga
+(NSString *)reveserCharacters:(NSString*
)srcStr
{
NSString *dstString =
[srcStr lowercaseString];
for (NSInteger i=
0; i<[dstString length]; i++
) {
unichar ch =
[dstString characterAtIndex:i];
if ( ch ==
[srcStr characterAtIndex:i]) {
dstString = [dstString stringByReplacingCharactersInRange:NSMakeRange(i,
1) withString:[NSString stringWithFormat:
@"%C", (unichar)(ch-
32)]];
}
}
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 =
0;
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 0;
}
转载于:https://www.cnblogs.com/0515offer/p/4568535.html