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:@""];

     

     

     

  • 相关阅读:
    HDU 5642 King's Order 动态规划
    HDU 5640 King's Cake GCD
    HDU 5641 King's Phone 模拟
    HDU 5299 Circles Game 博弈论 暴力
    HDU 5294 Tricks Device 网络流 最短路
    HDU 5289 Assignment rmq
    HDU 5288 OO’s Sequence 水题
    星际争霸 虚空之遗 人族5BB 操作流程
    Codeforces Beta Round #3 D. Least Cost Bracket Sequence 优先队列
    Codeforces Beta Round #3 C. Tic-tac-toe 模拟题
  • 原文地址:https://www.cnblogs.com/scottdinggo/p/4508367.html
Copyright © 2011-2022 走看看