本文的目的主要是练习使用OC中的两个字符串:
StringOperation.h文件:
//
// StringOperation.h
// IOS150610_OC_字符串练习
//
// Created by qianfeng on 15/6/10.
// Copyright (c) 2015年 Peng Junlong. All rights reserved.
//
#import <Foundation/Foundation.h>
@interface StringOperation : NSObject
+(NSString*)reveserString:(NSString*)srcStr;
+ (NSString *)compressString:(NSString *)srcStr;
+ (NSString *)sortString:(NSString *)srcStr;
+ (NSString *)reverCharacter:(NSString *)srcStr;
+ (NSString *)replaceString:(NSString *)srcStr
betweenStartKey:(NSString* )startKey
andEndKey:(NSString*)endKey;
+(NSInteger)subStringCount:(NSString*)srcStr findStr:(NSString*)findStr;
@end
StringOperation.m文件:
//
// StringOperation.m
// IOS150610_OC_字符串练习
//
// Created by qianfeng on 15/6/10.
// Copyright (c) 2015年 Peng Junlong. All rights reserved.
//
#import "StringOperation.h"
@implementation StringOperation
//将传入的字符串逆序
//比如输入 @"abcdef"输出@"fedcba"
+(NSString*)reveserString:(NSString*)srcStr
{
NSInteger len = [srcStr length];
unichar ch;
NSString *dest = @"";
for (NSInteger i=len-1; i>=0; i--) {
ch = [srcStr characterAtIndex:i];
dest = [dest stringByAppendingFormat:@"%C",ch];
}
return dest;
}
//压缩字符串
//比如输入@"aaabbbcceaa" 输出@"3a3b2c1e2a"
+ (NSString *)compressString:(NSString *)srcStr
{
NSInteger len = [srcStr length];
unichar ch;
NSString *dest = @"";
NSInteger count = 1;
NSInteger j;
for (NSInteger i=0; i<len;) {
ch = [srcStr characterAtIndex:i];
count = 1;
for (j=i+1; j<len; j++) {
if (ch == [srcStr characterAtIndex:j]) {
count++;
}
else
{
break;
}
}
i=j;
dest = [dest stringByAppendingFormat:@"%ld%C",count,ch];
}
return dest;
}
//对字符串按字母顺序进行排序
//比如输入@"aczabczab" 输出@"aaabbcczz"
+ (NSString *)sortString:(NSString *)srcStr
{
NSInteger len = [srcStr length];
NSString *temCh;
NSString *temCh1;
for (NSInteger i=0; i<len-1; i++) {
for (NSInteger j = 0; j<len-i-1; j++) {
if ([srcStr characterAtIndex:j] > [srcStr characterAtIndex:j+1]) {
temCh =[NSString stringWithFormat:@"%C",[srcStr characterAtIndex:j]];
temCh1 =[NSString stringWithFormat:@"%C",[srcStr characterAtIndex:j+1]];
srcStr = [srcStr stringByReplacingCharactersInRange:NSMakeRange(j, 1) withString:temCh1];
srcStr = [srcStr stringByReplacingCharactersInRange:NSMakeRange(j+1, 1) withString:temCh];
}
}
}
return srcStr;
}
//将原字符串进行小写转大写,大写转小写
//比如输入 @"aBCdEfGA" 输出 @"AbcDeFga"
+ (NSString *)reverCharacter:(NSString *)srcStr
{
NSInteger len = [srcStr length];
unichar ch;
NSString *dest = @"";
for (NSInteger i=0; i<len;i++) {
ch = [srcStr characterAtIndex:i];
if (ch >= 'a' && ch <= 'z') {
ch = ch-32;
}
else{
ch = ch + 32;
}
dest = [dest stringByAppendingFormat:@"%C",ch];
}
return dest;
}
// 替换字符串srcStr中从startKey到endKey之间的字符串//返回结果
//比如输入srcStr=@"abc da abbc cde f" startKey=@"da" endKey=@"cde" 输出 @"abbc"
+ (NSString *)replaceString:(NSString *)srcStr betweenStartKey:(NSString* )startKey andEndKey:(NSString*)endKey
{
NSRange rangeStart = [srcStr rangeOfString:startKey];
NSRange rangeEnd = [srcStr rangeOfString:endKey];
NSString *subStr = [srcStr substringWithRange:NSMakeRange(rangeStart.location+rangeStart.length+1, rangeEnd.location-rangeStart.location-rangeStart.length-2)];
return subStr;
}
// 返回字符串srcStr中出现子串findStr的次数
//helloworldhelloworldhello hello
+(NSInteger)subStringCount:(NSString*)srcStr findStr:(NSString*)findStr
{
NSString *dest = srcStr;
NSRange range;
NSInteger count = 0;
range = [dest rangeOfString:findStr];
while (range.location != NSNotFound) {
count++;
dest = [dest substringFromIndex:range.location+[findStr length]];
range = [dest rangeOfString:findStr];
}
return count;
}
@end
main.m主方法:
//
// main.m
// IOS150610_OC_字符串练习
//
// Created by qianfeng on 15/6/10.
// Copyright (c) 2015年 Peng Junlong. All rights reserved.
//
#import <Foundation/Foundation.h>
#import "StringOperation.h"
int main(int argc, const char * argv[]) {
@autoreleasepool {
// 3. 现有字符串@"Welcome to Bejing."
// 提取第3个到第6个字符.
NSString *subStr4 = [str4 substringWithRange:NSMakeRange(2, 4)];
NSLog(@"subString = %@",subStr4);
// 4. 现有字符串@"When I was young, I loved a girl on neighbor class."
// 要求不通过点数,从was提取到girl。
NSString *str5 = @"When I was young, I loved a girl on neighbor class.";
NSRange rangeWas = [str5 rangeOfString:@"was"];
NSRange rangeGirl = [str5 rangeOfString:@"girl"];
if(rangeWas.location != NSNotFound && rangeGirl.location != NSNotFound && rangeWas.location < rangeGirl.location)
{
str5 = [str5 substringWithRange:NSMakeRange(rangeWas.location, rangeGirl.location-rangeWas.location+rangeGirl.length)];
}
NSLog(@"substring = %@",str5);
// Welcome to Qianfeng.
// 删除to这个词。
NSMutableString *str6 = [NSMutableString stringWithString: @"Welcome to Qianfeng."];
NSRange range1 = [str6 rangeOfString:@"to"];
[str6 deleteCharactersInRange:range1];
NSLog(@"str6 = %@",str6);
// 6. Hello world两个单词间插入China
NSMutableString *str7 = [NSMutableString stringWithUTF8String:"Hello world"];
[str7 insertString:@"China" atIndex:6];
NSLog(@"str7= %@",str7);
// 7. 现有字符串@"When I was young, I loved a girl on neighbor class. "
// 从young到girl,改成@"teacher, I rather teaching the students"
NSString *str8 = @"When I was young, I loved a girl on neighbor class. ";
NSRange rangeYoung = [str8 rangeOfString:@"young"];
NSRange rangeG = [str8 rangeOfString:@"girl"];
if(rangeYoung.location != NSNotFound && rangeG.location != NSNotFound && rangeYoung.location < rangeG.location)
{
str8 = [str8 stringByReplacingCharactersInRange:NSMakeRange(rangeYoung.location, rangeG.location-rangeYoung.location
+rangeG.length)
withString:@"teacher, I rather teaching the students"];
}
NSLog(@"str8 = %@",str8);
//将传入的字符串逆序
//比如输入 @"abcdef"输出@"fedcba"
//+(NSString*)reveserString:(NSString*)srcStr;
NSLog(@"%@",[StringOperation reveserString:@"abcdef"]);
NSLog(@"%@",[StringOperation compressString:@"aaabbbcceaaaad"]);
NSLog(@"%@",[StringOperation sortString:@"aczabczab"]);
NSLog(@"%@",[StringOperation reverCharacter:@"aBCdEfGA"]);
NSLog(@"%@",[StringOperation replaceString:@"abc da abbc cde f" betweenStartKey:@"da" andEndKey:@"cde"]);
NSLog(@"%ld",[StringOperation subStringCount:@"helloworldhelloworldhello" findStr:@"hello"]);
}
<span style="white-space:pre"> </span>return 0;
}