iOS开发总结之 NSString和NSMutableString

19 篇文章 0 订阅

直接上代码,排版有些乱,有时间再整理

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[])
{
    @autoreleasepool {
        // 1.将file://baidu.jpg中的file替换为http
//        NSMutableString *str = [NSMutableString stringWithString:@"file://baidu.jpg"];
        NSMutableString *str = [NSMutableString string];
        // 设置整个字符串的内容
        str.string = @"file://baidu.jpg";
        
        // 替换
//        NSRange range = NSMakeRange(0, str.length);
        NSLog(@"%@", str);
//        [str replaceOccurrencesOfString:@"file" withString:@"http" options:0 range:range];
        
        [str replaceCharactersInRange:[str rangeOfString:@"file"] withString:@"http"];
        
        NSLog(@"%@", str);
        
        // 将字符串拼接到最后面
//        [str appendString:@"abc"];
        
        // 设置整个字符串的所有内容
//        str.string = @"def";
        
        
        // 这种方法会产生新的字符串对象
//        NSString *str = @"file://baidu.xxxxxx";
//        
//        NSString *newStr = [str stringByReplacingOccurrencesOfString:@"file" withString:@"http"];
//        
//        NSLog(@"str=%@", str);
//        NSLog(@"newStr=%@", newStr);
    }
    return 0;
}

void insertString()
{
    NSMutableString *str = [NSMutableString string];
    [str appendString:@"github"];
    [str insertString:@"http://" atIndex:0];
    NSLog(@"%@", str);
}

/**
 不建议采取(会产生很多临时的字符串对象)
 */
void appendString4()
{
    // 1.将10个itcast拼接起来, 中间用空格隔开
    // 目标字符串
    NSString *destStr = @"";
    
    // 拼接字符串
    for (int i = 0; i<10; i++) {
        destStr = [destStr stringByAppendingString:@" baidu"];
    }
    
    destStr = [destStr stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceCharacterSet]];
    
    NSLog(@"-%@-", destStr);
}

void appendString3()
{
    // 1.将10个baidu拼接起来, 中间用空格隔开
    NSMutableString *destStr = [NSMutableString string];
    for (int i = 0; i<10; i++) {
        [destStr appendString:@" baidu"];
    }
    
    // 2.删除最后一个空格
    [destStr deleteCharactersInRange:NSMakeRange(0, 1)];
    // [destStr deleteCharactersInRange:NSMakeRange(destStr.length - 1, 1)];
    
    NSLog(@"--%@--", destStr);
}

void deleteString()
{
    NSMutableString *str = [NSMutableString string];
    [str appendString:@"http://itcast"];
    NSLog(@"初始化:%@", str);
    
    //        [str deleteCharactersInRange:NSMakeRange(0, 7)];
    
    // 结合rangeOfString和deleteCharactersInRange方法能准确删除某个固定的字符串
    NSRange range = [str rangeOfString:@"itcast"];
    [str deleteCharactersInRange:range];
    
    NSLog(@"删除后:%@", str);
}

void appendString2()
{
    // 1.将10个itcast拼接起来, 中间用空格隔开, 最后写入文件中
    NSString *substr = @"itcast";
    
    NSMutableString *destStr = [NSMutableString string];
    for (int i = 0; i<10; i++) {
        //            if (i != 0) {
        if (i) { // 只有i不等于
            [destStr appendString:@" "];
        }
        [destStr appendString:substr];
    }
    
    [destStr writeToFile:@"/Users/apple/Desktop/dest.txt" atomically:YES encoding:NSUTF8StringEncoding error:nil];
}

void appendString()
{
    // 不可变
    NSString *str = @"Jack";
    
    // 可变
    NSMutableString *str2 = [NSMutableString string];
    
    [str2 appendString:@"Rose"];
    [str2 appendString:@" love  "];
    [str2 appendString:@"Jack."];
    
    int age = 20;
    [str2 appendFormat:@"My age is %d", age];
    
    NSLog(@"%@", str2);

}

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[])
{
    @autoreleasepool {
        NSString *str = @"hkjfaslhjfkfkj会尽快发生空间hjksdkjhfhkjdsfhk;ds;khfk;hds";
       
        
        [str writeToFile:@"/Users/apple/Desktop/str.txt" atomically:YES encoding:NSUTF8StringEncoding error:nil];
    }
    return 0;
}



void stringCreate2()
{
    // 1.从一个URL中读取字符串内容
    // 协议头://主机域名/路径
    // file://192.168.20.25/Users/apple/Desktop/test.txt
    // file:///Users/apple/Desktop/test.txt
    //        NSURL *url = [NSURL URLWithString:@"http://www.baidu.com"];
    
    
    //        NSURL *url = [NSURL URLWithString:@"file:///Users/apple/Desktop/test.txt"];
    
    // fileURLWithPath创建出来的URL默认就是file协议
    NSURL *url = [NSURL fileURLWithPath:@"/Users/apple/Desktop/test.txt"];
    NSString *str = [NSString stringWithContentsOfURL:url encoding:NSUTF8StringEncoding error:nil];
    NSLog(@"%@", str);
}

void stringCreate()
{
    
    // 1.直接赋值 这两个是同一个字符串  存放在栈当中的(栈中的变量每次创建不会重新分配内存    NSString *str = @"Jack";
    NSString *str3 = @"Jack";
    
    // 2.格式化 这两个不是同一个字符串 存放在堆空间当中的(堆空间的变量每次创建都会重新分配内存
    NSString *str2 = [NSString stringWithFormat:@"Jack"];
    NSString *str4 = [NSString stringWithFormat:@"Jack"];
    //通过P打印内存地址
    NSLog(@"%p - %p", str2, str4);
    //        NSString *str2 = [[NSString alloc] initWithFormat:@"my age is %d", 10];
    //        [NSString stringWithFormat:<#(NSString *), ...#>];
    
    // 3.从文件中读取
    NSError *eror = nil;
    NSString *str5 = [NSString stringWithContentsOfFile:@"/Users/apple/Desktop/test.txt" encoding:NSUTF8StringEncoding error:&eror];
    if (eror != nil) {// 读取失败
        NSLog(@"读取失败,失败原因是:%@", [eror localizedDescription]);
    } else {// 读取成功
        NSLog(@"读取成功,文件内容是:%@", str5);
    }
}

#import <Foundation/Foundation.h>

int main(int argc, const char * argv[])
{
    @autoreleasepool {
        NSString *str = @"adc";
        NSString *str2 = @"ADc";
        
        // str > str2  NSOrderedDescending
        // str < str2  NSOrderedAscending
        // str == str2 NSOrderedSame
        NSComparisonResult result = [str compare:str2];
        switch (result) {
            case NSOrderedDescending:
                NSLog(@"str > str2");
                break;
                
            case NSOrderedAscending:
                NSLog(@"str < str2");
                break;
                
            case NSOrderedSame:
                NSLog(@"str == str2");
                break;
        }
    }
    return 0;
}
void str(){
    NSString *str = @"android:///Users/apple/android/jkl/test.jpg";
    
    if ([str hasPrefix:@"http"]) {
        NSLog(@"远程网络资源");
    } else {
        NSLog(@"非远程网络资源");
    }
    
    if ([str hasSuffix:@"jpg"]) {
        NSLog(@"jpg资源");
    } else {
        NSLog(@"非jpg资源");
    }
    
    NSRange range = [str rangeOfString:@"android" options:NSBackwardsSearch];
    
    NSLog(@"range.location=%zd %zd", range.location, range.length);
    
    // 如果找不到对应的字符串, range.location==NSNotFound, range.length==0
    
    //        if (range.location == NSNotFound) { // 没有找到
    if (range.length == 0) {// 没有找到
        NSLog(@"str里面没有包含android");
    } else {
        NSLog(@"str里面有包含android");
    }
    
    //        NSLog(@"%d", [str isEqualToString:str2]);
    //        NSString *str = @"JackfsdfJH";
    //        NSString *str2 = [str capitalizedString];
    //
    //        NSLog(@"str=%@", str);
    //
    //        NSLog(@"str2=%@", str2);
}
void compare()
{
    NSString *str = @"adc";
    NSString *str2 = @"ADc";
    
    // str > str2  NSOrderedDescending
    // str < str2  NSOrderedAscending
    // str == str2 NSOrderedSame
    NSComparisonResult result = [str compare:str2];
    switch (result) {
        case NSOrderedDescending:
            NSLog(@"str > str2");
            break;
            
        case NSOrderedAscending:
            NSLog(@"str < str2");
            break;
            
        case NSOrderedSame:
            NSLog(@"str == str2");
            break;
    }
}

#import <Foundation/Foundation.h>



int main(int argc, const char * argv[])
{
    @autoreleasepool {
    
    }
    return 0;
}

void stringTrimUpper()
{
    NSString *str = @"HTTP://ios.itcast.cn/IOS/images/content_25.jpg";
    
    NSString *newStr = [str stringByTrimmingCharactersInSet:[NSCharacterSet uppercaseLetterCharacterSet]];
    NSLog(@"%@", newStr);
}

void stringTrimSpace()
{
    NSString *str = @"  http://ios.itcast.cn  ios/images/  content_25.jpg  ";
    
    // trim : 去除头尾
    // whitespaceCharacterSet : 空格
    NSCharacterSet *set = [NSCharacterSet whitespaceCharacterSet];
    NSString *newStr = [str stringByTrimmingCharactersInSet:set];
    
    NSLog(@"--%@--", str);
    NSLog(@"--%@--", newStr);
}

void string2int()
{
    NSString *str = @"108";
    NSString *str2 = @"200.5";
    // str.intValue ---> 108
    //        int sum = str.intValue + str2.intValue;
    double sum = str.intValue + str2.doubleValue;
    NSLog(@"%f", sum);
}

void replaceString2()
{
    NSString *str = @"  http:**  ios.baidu.cn  *ios*images*  content_25.jpg  ";
    
    // 1.把空格消掉
    NSString *newStrWithoutSpace = [str stringByReplacingOccurrencesOfString:@" " withString:@""];
    
    // 2.把*换成/
    NSString *destStr = [newStrWithoutSpace stringByReplacingOccurrencesOfString:@"*" withString:@"/"];
    
    NSLog(@"str = %@", str);
    NSLog(@"newStrWithoutSpace = %@", newStrWithoutSpace);
    NSLog(@"destStr = %@", destStr);
}

/**
 将http:**ios.itcast.cn*ios*images*content_25.jpg中的*替换为/
 */
void replaceString()
{
    NSString *str = @"http:**ios.baidu.cn*ios*images*content_25.jpg";
    
    // Replacing : 替换
    // Occurrences : 出现
    //  用/替换所有出现的*
    NSString *newStr = [str stringByReplacingOccurrencesOfString:@"*" withString:@"/"];
    NSLog(@"%@", newStr);
}

/**
 用3种方法将下面字符串中的中文截取出来
 */
void substring()
{
    NSString *str = @"<itt>人工智能</itt>";
    
    // 不建议采取
    //        NSRange range;
    //        range.location = 8;
    //        range.length = 4;
    //        NSString *substr = [str substringWithRange:range];
    
    // 1.方法1
    //        NSRange range;
    //        range.location = [str rangeOfString:@">"].location + 1;
    //        range.length = [str rangeOfString:@"</"].location - range.location;
    
    /**
     typedef struct _NSRange {
     NSUInteger location;
     NSUInteger length;
     } NSRange;
     */
    NSUInteger loc = [str rangeOfString:@">"].location + 1;
    NSUInteger len = [str rangeOfString:@"</"].location - loc;
    //        NSRange range = {loc, len};
    //        NSRange range = {.length = len, .location = loc};
    NSRange range = NSMakeRange(loc, len);
    NSString *substr = [str substringWithRange:range];
    NSLog(@"%@", substr);
   
}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值