zoukankan      html  css  js  c++  java
  • OC6_字符串练习

    //
    //  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;
    }
  • 相关阅读:
    Atitit fms Strait (海峡) lst 数据列表目录1. 4大洋 12. 著名的海大约40个,总共约55个海 13. 海区列表 23.1. 、波利尼西亚(Polynesia,
    Atitit trave islands list 旅游资源列表岛屿目录1. 东南亚著名的旅游岛屿 21.1. Cjkv 日韩 冲绳 琉球 济州岛 北海道 21.2. 中国 涠洲岛 南澳
    Atitit Major island groups and archipelagos 主要的岛群和群岛目录资料目录1. 岛群 波利尼西亚(Polynesia, 美拉尼西亚(Melanesia,
    Atitit glb 3tie city lst 三线城市列表 数据目录1. 全球范围内约90个城市 三线 12. 世界性三线城市全球共
    Atitit glb 1tie 2tie city lst 一二线城市列表数据约50个一线城市Alpha ++ 阿尔法++,,London 伦敦,,New York 纽约,,Alpha +
    Attit 现代编程语言重要特性目录第一章 类型系统 基本三大类型 2第一节 字符串 数字 bool 2第二节 推断局部变量 2第三节 动态类型 2第二章 可读性与开发效率 简单性 2
    Atitit 未来数据库新特性展望目录1. 统一的翻页 21.1. 2 Easy Top-N
    使用Chrome DevTools(console ande elements panel)进行xpath/css/js定位
    chrome -console妙用之定位xpath/js/css
    表达式树之构建Lambda表达式
  • 原文地址:https://www.cnblogs.com/0515offer/p/4568535.html
Copyright © 2011-2022 走看看