Foundation框架基础 NSString

#import <Foundation/Foundation.h>
/*  
 概念:NSString是不可变字符串,所有它所有产生其他字符串方法都是生成一个新的字符串,而不会改变原来字符串
 */

#import "NSString+CZ.h"
//字符串与URL
//URL: 概念:Uniform Resource Locator 统一资源定位符
//URL:格式 协议头://主机名称/资源路径
//http://www.itcast.cn:8080/images/beauty.png
//404 没找到
//file:///Users/apple/Desktop/test.txt
//由于file就是在本机上查找,所有没有主机名称
//ftp://

int main( int argc, const char * argv[]) {

       
NSString *str = @"今天好冷啊!要多穿衣服!®" ;
    把UTF8编码的字符串,编码成为URL中可用的字符串
//      NSString *str3 =  [str stringByAddingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
    把URL中可用的字符串,编码成为UTF8编码的字符串
//      str3 =[str stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
//      NSLog(@"%@",str3);
   
   
NSString *path = @"file:///Users/apple/Desktop/测试.txt" ;
    path = [path
stringByAddingPercentEscapesUsingEncoding : NSUTF8StringEncoding ];
   
   
//    NSURL *url = [NSURL URLWithString:@"file:///Users/apple/Desktop/test.txt"];
    
NSURL   *url = [ NSURL URLWithString :path];
     
NSError *error = nil ;
     [str
writeToURL :url atomically : YES encoding : NSUTF8StringEncoding error :&error];
   
    
if (error) {
       
NSLog ( @"%@" ,error);
     }
else {
       
NSLog ( @"写入成功!" );
     }
    
NSString *content =  [ NSString stringWithContentsOfURL :url encoding : NSUTF8StringEncoding error :&error];
   
    NSLog(@"%@",content);
   
   
return 0 ;
}
//字符串与文件
void testStringAndfile()
{
   
//  把字符串写入文件
   
NSString *str = @"今天好冷啊!" ;
   
NSString *path = @"/Users/apple/Desktop/test.txt" ;
   
   
NSError *error = nil ;
   
BOOL isSuccess = [str writeToFile :path atomically : YES encoding : NSUTF8StringEncoding error :(&error)];
   
   
//    if (isSuccess) {
   
//        NSLog(@"写入成功!");
   
//    }else{
   
//        NSLog(@"%@",error.userInfo);
   
//    }
   
   
//    if (error) {
   
//         NSLog(@"%@",error.userInfo);
   
//    }else{
   
//        NSLog(@"写入成功!");
   
//    }
   
//    读取文件
   
NSString *string  = [ NSString stringWithContentsOfFile :path encoding : NSUTF8StringEncoding error :&error];
   
if (error) {
       
NSLog ( @"%@" ,error);
    }
else {
       
NSLog ( @"%@" ,string);
    }
}

void testStringPath()
{
   
//  在原来的路径上拼接一个路径
   
   
NSString *path = @"/Users/apple/test.txt" ;
   
   
//    path = [path stringByAppendingPathComponent:@"Desktop"];
   
//  获取扩展名(拓展名)
   
//    path  = [path  pathExtension];
    path = [path
stringByDeletingPathExtension ];
    path = [path
stringByAppendingPathExtension : @"png" ];
   
NSLog ( @"%@" ,path);
}


void testRepeace()
{
   
NSString *str = @" \nwww - itcast - cn " ;
   
//  在原有字符串的末尾拼接另一个字符产生一个新的字符串
   
//  itcast
   
NSString *str1 = [str stringByAppendingString : @"itcast" ];
    NSLog(@"%@",str1);

    //  字符替换
    str1 = [str
stringByReplacingOccurrencesOfString : @"-" withString : @"." ];
    NSLog(@"%@",str1);

    //  去掉字符串中空格
    str1 = [str
stringByReplacingOccurrencesOfString : @" " withString : @"" ];
    NSLog(@"%@",str1);

    //  使用某个字符串替换掉原来字符串中某个区间的字符串
   
NSRange range = [str rangeOfString : @"itcast" ];
    str1  = [str
stringByReplacingCharactersInRange :range withString : @"传智播客" ];
   
NSLog ( @"%@" ,str1);
   
   
//  删除原字符串中的所有指定的字符
    str1 =  [str
stringByReplacingOccurrencesOfString : @"itcast" withString : @"" ];
   
NSLog ( @"%@" ,str1);
   
//  【掌握】去掉两头的空格
   
    str1 = [str
stringByTrimmingCharactersInSet :[ NSCharacterSet whitespaceCharacterSet ]];
    NSLog(@"%@",str1);
}


void testConvert()
{
   
//  1、转大写
   
NSString *str = @"today is cool" ;
   
//  大写
   
NSString *str2  = [str uppercaseString ];
   
//  小写
    str2 = [str2 lowercaseString];

    //  单词首字母大写
    str2 = [str
capitalizedString ];
   
NSLog ( @"%@" ,str);
    NSLog(@"%@",str2);

    //  基本数据类型转字符串
   
NSString *intStr = [ NSString stringWithFormat : @"%i" , 10 ];
    NSLog(@"%@",intStr);

    //  字符转基本数据类型
   
int i = intStr. intValue ;
   
double d = intStr. doubleValue ;
   
float f = intStr. floatValue ;
   
NSLog ( @"%d,%lf" ,i,d);
   
   
//  把C语言字符串转换为OC字符串
   
NSString *str8 = [ NSString stringWithCString : "hehe" encoding : NSUTF8StringEncoding ];
   
NSLog ( @"%@" ,str8);
   
   
// 把OC语言字符串转换为C字符串
   
const char *cStr = [str8 cStringUsingEncoding : NSUTF8StringEncoding ];
   
NSLog ( @"%s" ,cStr);
}

void testCompare()
{
   
//  字符串的比较
   
NSString *str1 = @"abc" ;
   
NSString *str2 = @"Abc" ;
   
//  比较是内容,从前往后一个一个的比较
   
NSComparisonResult result = [str1 compare :str2];
   
/*
     NSOrderedAscending = -1L, str1 < str2
     NSOrderedSame,            str1 == str2
     NSOrderedDescending       str1 > str2
    
     */

   
//    if(result == NSOrderedSame){
   
//        NSLog(@"str1 == str2");
   
//    }else if(result == NSOrderedAscending){
   
//        NSLog(@"str1 < str2");
   
//    }else if(result == NSOrderedDescending){
   
//        NSLog(@"str1 > str2");
   
//    }
   
    result = [str1
compare :str2 options : NSCaseInsensitiveSearch ];
   
/*
     NSCaseInsensitiveSearch 忽略大小写
     NSNumericSearch 用于数值类型的比较
     */

   
if (result == NSOrderedSame ){
       
NSLog ( @"str1 == str2" );
    }
else if (result == NSOrderedAscending ){
       
NSLog ( @"str1 < str2" );
    }
else if (result == NSOrderedDescending ){
       
NSLog ( @"str1 > str2" );
    }
   
    str1 =
@"0123" ;
    str2 =
@"123" ;
    result = [str1
compare :str2 options : NSNumericSearch ];
   
   
if (result == NSOrderedSame ){
       
NSLog ( @"str1 == str2" );
    }
else if (result == NSOrderedAscending ){
       
NSLog ( @"str1 < str2" );
    }
else if (result == NSOrderedDescending ){
       
NSLog ( @"str1 > str2" );
    }
}


voi d testHas()
{
    //字符串以什么开头
    NSString *string = @"http://www.itcast.cn/images/beauty.png" ;
   
//  判断协议是不http
   
//                         前缀
   
BOOL isHttp = [string hasPrefix : @"http://" ];
   
if (isHttp) {
       
NSLog ( @"是一个HTTP 协议" );
    }

    // 判断资源是不是一个png的图片 mp4 mp3 jpeg txt doc xls pages
   
//                     后缀
   
BOOL isPng= [string hasSuffix : @".png" ];
   
if (isPng) {
       
NSLog ( @"是一个png类型的图片" );
    }
}


void testIsEqual()
{
   
NSString *str1 = @"" ;
   
//    NSString *str2 = @"acc";
    //  比较字符的地址
   
//    if (str1 == str2) {
   
//        NSLog(@"相等");
    //    }

    NSString *str3 = [ NSString stringWithFormat : @"a" ];
   
//  比较内容
   
if ([str1 isEqualToString :str3]) {
       
NSLog ( @"相等" );
    }
   
if ([str1 isEqual :str3]) {
       
NSLog ( @"相等" );
    }
   
//
   
if ([str1 myIsEqual :str3]) {
       
NSLog ( @"相等" );
    }
   
}


void testCharacterAtIndex()
{
   
NSString *str = @"www.itcast.cn" ;
   
   
unichar c = [str characterAtIndex : 4 ];
   
NSLog ( @"%c" ,c);
}


/*
 练习
 用3种方法将下面字符串中的中文截取出来
 <itcast>传智播客</itcast>
 */
void testSubString2()
{
   
// 1、第一种方式 XML
   
NSString *str = @"<itcast>传智播客</itcast>" ;
   
NSRange range = { 8 , 4 };
   
NSString *str2  = [str substringWithRange :range];
    NSLog(@"%@",str2);

    // 2、找“>”位置
   
NSRange range1 = [str rangeOfString : @">" ];
    NSLog(@"%@",NSStringFromRange(range1));

    //  <itcast>传智播客</itcast> -》 传智播客</itcast>
   
NSString *str3 = [str substringFromIndex :range1. location + 1 ];
    NSRange range2 = [str3 rangeOfString:@"<"];

    //  传智播客</itcast> ->   传智播客
   
NSString *str4 = [str3 substringToIndex :range2. location ];
    NSLog(@"%@",str4);

    // 3、第三种方式 <itcast>传智播客</itcast> -》 <itcast>传智播客
   
NSRange range5 = [str rangeOfString : @"</" ];
    NSLog(@"%@",NSStringFromRange(range5));

    //  <itcast>传智播客</itcast> -》  <itcast>传智播客
   
NSString *str5 = [str substringToIndex :range5. location ];
   
//  <itcast>传智播客  ->   传智播客
   
NSRange range6 = [str5 rangeOfString : @">" ];
   
   
NSString *str8 = [str5 substringFromIndex :range6. location + 1 ];
   
NSLog ( @"%@" ,str8);
}


void testSubString()
{
   
//  字符串的获取
   
//  1、获取字符长度
   
NSString *str = @"www.itcast.cn" ;
   
long length = str. length ;
    NSLog(@"%zd",length);

    //  2、获取子串
   
//   从哪个索引开始截取到字符串的末尾(包含索引上字符)
   
NSString *str2 = [str substringFromIndex : 4 ];
    NSLog(@"%@",str2);

    //   从字符开头开始截取到索引的位置(不包含索引上的字符)
   
NSString *str3  = [str substringToIndex : 3 ];
   
NSLog ( @"%@" ,str3);
   
   
/*
     typedef struct _NSRange {
     NSUInteger location;//起始位置
     NSUInteger length;//表示长度
     } NSRange;
     */

    //  从哪个位置开始截取,截取多长
   
NSRange range = { 4 , 6 };
   
NSString *str4 = [str substringWithRange :range];
   
NSLog ( @"%@" ,str4);
   
   
// 获取某个子串所在的区间
   
NSRange range1 =  [str rangeOfString : @"itcast" ];
   
NSLog ( @"%@" , NSStringFromRange (range));
   
   
NSRange range2 =  [str rangeOfString : @"icast" ];
   
if (range2. location == NSNotFound ) {
       
NSLog ( @"没有这个子串" );
    }
   
   
if (range2. length == 0 ) {
       
NSLog ( @"没有这个子串" );
    }
   
    NSLog(@"%@",NSStringFromRange(range2));
}


void testCreateString()
{
   
   
//  第一种:字面量,它是常量字符串,存储常量区
   
   
NSString *str = @"abc" ;
   
NSString *str2 = @"abc" ;
   
NSLog ( @"%p" ,str);
    NSLog(@"%p",str2);

    //  第二种是通过 快捷的构造方法
   
NSString *string = [ NSString stringWithFormat : @"string = %@,int = %d" , @"hello" , 10 ];
    NSLog(@"%p",string);
  
    //  第三种方式 初始化方法
   
NSString * str3 = [[ NSString alloc ] initWithFormat : @"%@" , @"abc" ];
   
NSLog ( @"%p" ,str3);
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值