NSString

目录

    1.1 设置字符串行间距
    1.2 去除字符串前后的空格
    1.3 字符计算
    1.4 计算字符串高度
    1.5 null nil 转 @""
    1.6 分割字符串
    1.7 字符串比较大小
    1.8 查找字符串位置
    1.9 判断前后缀
    1.10 字符串提取
    1.12 保留小数点后两位
    1.13 用0补全
    1.14 %处理方法
    1.15 "处理方法
    1.16 获取图片类型
    1.17 字符串的每一字符

1.1 设置字符串行间距

.h

+ (NSMutableAttributedString *)stringWithSpacing:(NSString *)string 
                                     LineSpacing:(int)num;


.m

+ (NSMutableAttributedString *)stringWithSpacing:(NSString *)string 
                                     LineSpacing:(int)num
{
//
    NSMutableAttributedString *attributedString = [[NSMutableAttributedString 
alloc] initWithString:string];

    NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle 
alloc] init];

   [paragraphStyle setLineSpacing:num];//调整行间距

   [attributedString addAttribute:NSParagraphStyleAttributeName 
value:paragraphStyle range:NSMakeRange(0, [string length])];

   return attributedString;

}

1.2 去除字符串前后的空格

.h

/**
* 去除字符串前后的空格,判断输入的内容不是空格
*
* @param string 传入需要设置的字符串
*
* @return 去除空格后的字符串
*/

.h

+ (NSString *)stringWithTrimming:(NSString *)string;

.m

+ (NSString *)stringWithTrimming:(NSString *)string
{
    //去除空格
     NSString *cleanString = [string stringByTrimmingCharactersInSet:
[NSCharacterSet whitespaceAndNewlineCharacterSet]];

    return cleanString;

}
1.3 字符计算

.h

/**
* 计算一个字符串相当于多少个字
*
* @param text 传入的字符串
*
* @return 字符个数
*/

+ (NSUInteger)stringWithLength:(NSString *)text;


.m

+ (NSUInteger)stringWithLength:(NSString *)text
{

    NSUInteger asciiLength = 0;

    for (NSUInteger i = 0; i < text.length; i++) {

         unichar uc = [text characterAtIndex: i];
         asciiLength += isascii(uc) ? 1 : 2;
    }

    NSUInteger unicodeLength = asciiLength / 2;

    if(asciiLength % 2) {

          unicodeLength++;

     }
     return unicodeLength;
}
1.4 计算字符串高度

.h

/**
* 计算字符串高度
*
* @param string 需要计算的字符串
* @param font label设置的字大小
* @param width 需要计算内容的宽度
*
* @return CGSize类型
*/

.h

+ (CGSize)stringWithHeight:(NSString *)string 
                  withFont:(UIFont *)font
                 withWidth:(CGFloat)width;

.m

+ (CGSize)stringWithHeight:(NSString *)string 
                  withFont:(UIFont *)font 
                 withWidth:(CGFloat)width 
{

    CGSize textBlockMinSize = CGSizeMake(width, 10000);

    CGSize size = CGSizeZero;
    NSStringDrawingOptions options = NSStringDrawingTruncatesLastVisibleLine
                                   | NSStringDrawingUsesLineFragmentOrigin
                                   | NSStringDrawingUsesFontLeading;

    NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle 
  alloc] init];

    [paragraphStyle setLineSpacing:1];//调整行间距

    NSDictionary *attributes = [NSDictionary dictionaryWithObjectsAndKeys:
font,NSFontAttributeName,paragraphStyle,NSParagraphStyleAttributeName, nil];

    size = [string boundingRectWithSize:textBlockMinSize 
                                options:options 
                             attributes:attributes
                                context:nil].size;

    return CGSizeMake(ceilf(size.width), ceilf(size.height));

}

1.5 null nil 转  @""

.h

+ (NSString*)stringWithNull:(NSString *)string;

.m

// 转换空串
+(NSString*)stringWithNull:(NSString *)string{

    if ([string isEqual:[NSNull null]]) {

        return @"";

    }else if ([string isKindOfClass:[NSNull class]]){

        return @"";

    }else if (string==nil){

        return @"";

    }
    return string;
}


1.6 分割字符串

//用空格分割

    NSString *string=@"i am a person";
    
    NSArray *array=[string componentsSeparatedByString:@" "];
    
    
    //多符号切割
    
    NSString *str=@"1(333·)333 3333";
    
    NSArray *arr=[str componentsSeparatedByCharactersInSet:[NSCharacterSet 
                 characterSetWithCharactersInString:@"()· "]];
 
1.7 字符串比较大小

//字符串会一个字符一个字符比较,返回类型1 0 -1

1 表示string1 大于 string2

0 表示string1 等于 string2

-1 表示string1 小于 string2



例1:@"9"大于@"75"

NSString *string1 = @"9";

NSString *string2 = @"75";

int result = [string1 compare:string2];

NSLog(@"%d",result);//返回值是整形:1



例2:@"72"小于@"75"

NSString *string1 = @"72";

NSString *string2 = @"75";

int result = [string1 compare:string2];

NSLog(@"%d",result);//返回值是整形:-1



例3:@"8"等于@"8"

NSString *string1 = @"8";

NSString *string2 = @"8";

int result = [string1 compare:string2];

NSLog(@"%d",result);//返回值是整形:0



例4:不区分大小写比较

NSString *string1 = @"a";

NSString *string2 = @"A";

int result = [string1 compare:string2 options:NSCaseInsensitiveSearch]; 

NSLog(@"%d",result); //返回值是整形:0
1.8 查找字符串位置

NSString *str = @"lemon";

NSRange range = [str rangeOfString:@"em"];

NSLog(@"location = %lu, length = %lu",range.location,range.length);
1.9 判断前后缀

//1.前缀
NSString *str = @"http://www.baidu.com";

BOOL isHave = [str hasPrefix:@"http://"];

NSLog(@"%d",isHave);


//2.后缀
NSString *str = @"http://www.baidu.com";

BOOL isHave = [str hasSuffix:@"com"];

NSLog(@"%d",isHave);

1.10 字符串提取

//例1:从0开始,到第5个
NSString *str = @"http://www.baidu.com";

NSString *topStr = [str substringToIndex:5];

NSLog(@"%@",topStr); 

http:


//例2:从第5个到最后一个
NSString *str = @"http://www.baidu.com";

NSString *endStr = [str substringFromIndex:5];

NSLog(@"%@",endStr);

//www.baidu.com


//例3:从第2个到第7个
NSString *str = @"http://www.baidu.com";

NSString *rangeStr = [str substringWithRange:NSMakeRange(2, 7)];

NSLog(@"%@",rangeStr);

tp://ww

1.11 UTF8转码

NSString* str = [str stringByAddingPercentEscapesUsingEncoding:
NSUTF8StringEncoding];

1.12 保留小数点后两位

NSString *string = [NSString stringWithFormat:@"%.2f",M_PI];

//输出结果是: 3.14

NSLog(@"%@", string);
1.13 用0补全

NSInteger count = 5;

//02代表:如果count不足2位 用0在最前面补全(2代表总输出的个数)

NSString *string = [NSString stringWithFormat:@"%02zd",count];

//输出结果是: 05

NSLog(@"%@", string);
1.14 %处理方法

NSInteger count = 50;

//%是一个特殊符号 如果在NSString中用到%需要如下写法
NSString *string = [NSString stringWithFormat:@"%zd%%",count];

//输出结果是: 50%
NSLog(@"%@", string);
1.15 "处理方法

NSInteger count = 50;

//"是一个特殊符号, 如果在NSString中用到"需要用\进行转义

NSString *string = [NSString stringWithFormat:@"%zd\"",count];

//输出结果是: 50"

NSLog(@"%@", string);
1.16 获取图片类型

- (NSString *)contentTypeForImageData:(NSData *)data {

     uint8_t c;

     [data getBytes:&c length:1];

    switch (c) {

        case 0xFF:

        return @"jpeg";

        case 0x89:

        return @"png";

        case 0x47:

        return @"gif";

        case 0x49:

        case 0x4D:

        return @"tiff";

        case 0x52:

        if ([data length] < 12) {

            return nil;

        }

        NSString *testString = [[NSString alloc] initWithData:
        [data subdataWithRange:NSMakeRange(0, 12)] 
        encoding:NSASCIIStringEncoding];

        if ([testString hasPrefix:@"RIFF"] && [testString 
      hasSuffix:@"WEBP"]) 
        {
              return @"webp";
        }

        return nil;

    }

    return nil;

}
1.17 获取字符串的每一字符

- (NSArray *)words:(NSString *)string;
{

#if ! __has_feature(objc_arc)

NSMutableArray *words = [[[NSMutableArray alloc] init] autorelease];

#else

NSMutableArray *words = [[NSMutableArray alloc] init];

#endif

    const char *str = [string       cStringUsingEncoding:NSUTF8StringEncoding];

    char *word;

    for (int i = 0; i < strlen(str);) {

        int len = 0;

        if (str[i] >= 0xFFFFFFFC) {

            len = 6;

        } else if (str[i] >= 0xFFFFFFF8) {

           len = 5;

        } else if (str[i] >= 0xFFFFFFF0) {

          len = 4;

        } else if (str[i] >= 0xFFFFFFE0) {

          len = 3;

        } else if (str[i] >= 0xFFFFFFC0) {

          len = 2;

        } else if (str[i] >= 0x00) {

            len = 1;

        }

        word = malloc(sizeof(char) * (len + 1));

        for (int j = 0; j < len; j++) {

            word[j] = str[j + i];

        }

        word[len] = '\0';

        i = i + len;

        NSString *oneWord = [NSString stringWithCString:word           encoding:NSUTF8StringEncoding];

         free(word);

        [words addObject:oneWord];

        }

    return words;

}
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 159,835评论 4 364
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,598评论 1 295
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 109,569评论 0 244
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 44,159评论 0 213
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,533评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,710评论 1 222
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,923评论 2 313
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,674评论 0 203
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,421评论 1 246
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,622评论 2 245
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,115评论 1 260
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,428评论 2 254
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,114评论 3 238
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,097评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,875评论 0 197
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,753评论 2 276
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,649评论 2 271

推荐阅读更多精彩内容