zoukankan      html  css  js  c++  java
  • 字符串—NSString

    NSString是Objective-C的字符串类,用该类声明的对象是不可变的。

    字符串的创建:

    NSString *str = @"scottdinggo";  //直接赋值

    NSString *str = [NSString stringWithFormat:@"scottdinggo"];  //调用类函数赋值

     

    NSString *str = [[NSString alloc] initWithString:@"scottdinggo"];  //一般不用这种方法赋值,系统会提示多余(redundant)

    NSString *str = [NSString stringWithString:@"scottdinggo"];  //同上

     

    当字符串中含有中文时,一般使用这种赋值方法:

    NSString *str = [NSString stringWithCString:"scottdinggo" encoding:NSUTF8StringEncoding];

     

    字符串比较(按字符对应的ASCll大小):

    BOOL result = [str1 isEqualToString:str2];  //判断str1与str2是否相等,相等返回1,否则返回0

    或者   BOOL result = str1 == str2;

    BOOL result = [str1 isGreatThan:str2];  //判断str1是否大于str2(不包括等于),大于返回1,否则返回0

    BOOL result = [str1 isLessThan:str2];  //判断str1是否小于str2(不包括等于),小于返回1,否则返回0

     

    不区分大小写进行比较:

    NSComparisonResult result = [str1 caseInsensitiveCompare:str2];  //str1 < str2 返回-1,相等返回0,大于返回1

     

    字符串比较(按字母顺序)

    BOOL result = [str1 compare:str2] == NSOrderedSame;  //判断两个字符串是否相等,如果相等,返回YES,否则返回NO

    BOOL result = [str1 compare:str2] == NSOrderedAscending;  //按字母顺序判断两个字符串的大小,大于则返回YES,否则返回NO

    BOOL result = [str1 compare:str2] == NSOrderedDescending;  //按字母顺序判断两个字符串的大小,小于则返回YES,否则返回NO

     

    输出大写或者小写字母:

    NSLog(@"%@",[str1 uppercaseString]);  //输出大写

    NSLog(@"%@",[str1 lowercaseString]);  //输出小写

    NSLog(@"%@",[str1 capitalizedString]);  //首字母大写

     

    NSStringEncoding(字符串编码)

    1、NSASCllStringEncoding

    2、NSUTF8StringEncoding

    3、NSUnicodeStringEncoding

     

    Character Encoding:

    计算机中用二进制字符串来表示各种信息,每一个二进制位有两种状态(0和1),一个字节由8个二进制位组成,可以表示256种状态,每一种状态表示一种字符

    在计算机发展初期,美国定制了一套字符编码,弄清楚了英语字符与二进制位之间的关系,这套字符编码就是现在的ASCll编码(Amerian Standard Code For Information Interchange)

    ASCll码一共规定了128个字符的编码,只占用了一个字节的后七位,第一位统一规定为0;

    英语字母用一个字节的后七位就能表示全部,如果用来表示其他语言,128种状态是不够的

    所以世界上存在多种编码方式,同一种状态可能表示的是不同的字符,当你要打开一个文本文件时,就必须选择该文本文件以何种编码方式打开,不然就会出现乱码的情况

    Unicode主要就是解决此类问题的,它将世界上所以的符号都纳入其中,每一个符号都给予一个独一无二的编码

     

    UTF8是Unicode实现方式之一,是一种变长的编码方式

    对于单字节的字符,字节的第一位设为0,后七位是这个字符的Unicode码

    对于n字节的字符,第一个字节的前n位都设为1,第n+1位设为0,后面字节的前两位都设为10,空余的位是这个字符的Unicode码

     

    将char * 转化为 NSString

    char s[] = "scottding";

    NSString *str = [NSString stringWithCString:s encoding:NSUTF8StringEncoding];

     

    将NSString转化为Char *

    NSString *s = @"scottding";

    const char *str = [s UTF8String];

     

    从文本文件中读取:

    NSString *s = @"/Users/admin/Desktop/LeetCode/unique_paths.cpp";

    NSString *str = [NSString stringWithContentsOfFile:s encoding:NSUTF8StringEncoding error:nil];

    或者:

    NSURL *s = [NSURL URLWithString:@"file:///Users/admin/Desktop/LeetCode/unique_paths.cpp"];

    NSString *str = [NSString stringWithContentsOfURL:s encoding:NSUTF8StringEncoding error:nil];

     

    求字符串长度:

    [str length]  // 返回字符串str的长度

     

    类型转换:

    NSString *s = @"3.14";

    float f = [s floatValue]; 

    int d = [s intvalue];

     

    把字符串转换成字符数组:

    NSString *s = @"abc abc abc";

    NSArray *array = [s componentsSeparatedByString:@" "];

     

    字符串截取:

    NSString *str = [s substringFromIndex:3];    // 从字符串s的下表为3的位置开始截取到结尾

    NSString *str = [s substringToIndex:3];      // 从字符串开头截取到字符串下表为3的位置(不包括位置3的字符)

    NSRange range = {3 , 4};

    NSString *str = [s substringWithRange:range];  //从位置3开始,截取4个字符

     

    字符串拼接:

    NSString *str = [NSString stringWithFormat:@"%@%@",s1,s2];  //将字符串s1和s2拼接成一个字符串

    NSString *str = [s1 stringByAppendingString:s2];  //同上

     

    字符串转换成数组:

    NSArray *arrar = [s componentsSeparatedByString:@" "];  //componentsSeparatedByString  对字符串进行分离

     

    字符串查找:

    NSRange range = [s rangeOfString:@"scottdinggo"];

     

    去掉字符串中的空格:

    NSString *str = [s stringByReplacingOccurrencesOfString:@" " withString:@""];

     

     

     

  • 相关阅读:
    查看python中SQLite版本和sqlite3版本
    ubuntu系统安装与卸载
    CentOS下如何使用yum查看安装过的软件包
    【linux】CentOS7 升级sqlite3
    什么是Python的metaclass
    Python
    Python对字典分别按键(key)和值(value)进行排序
    python 用正则表达式去除特殊字符的两种方法
    从思维导图中学习javascript第五章字符串函数
    从思维导图中学习javascript第三章数组
  • 原文地址:https://www.cnblogs.com/scottdinggo/p/4508367.html
Copyright © 2011-2022 走看看