OC中文比较大小

来源:互联网 发布:航天技术发展知乎 编辑:程序博客网 时间:2024/05/16 15:28

oc之中的字符串为汉字的时候,我们常常要进行字符串比较,但是汉字不能比较,所以就要将汉字转化成为拼音,具体过程如下:

//可变字符串必须是可变字符串.
    NSMutableString *mutableString = [NSMutableStringstringWithString:@"
小明"];
    //
转成带声调的拼音
    CFStringTransform((CFMutableStringRef)mutableString, NULL,kCFStringTransformToLatin, false);
    NSLog(@"%@", mutableString);

  结果为: xiǎo míng

 //转成没有声调的拼音
    CFStringTransform((CFMutableStringRef)mutableString, NULL,kCFStringTransformStripDiacritics, false);

输出结果为:xiao ming
   NSLog(@"%@", mutableString);

注意:这个方法必须先将不可变字符串转化为可变字符串才能将汉字转化成拼音.

还有就是,此方法有缺陷:当遇到多音字的时候就不那么只能了,只能转化成为一种拼音

除此之外:就是大家也看到了转化后的拼音之间会出现空格,所以你要替换空格:

NSString *str = @"xiao mingming";
    NSString *newstr = [strstringByReplacingOccurrencesOfString:@" " withString:@""];

但是替换后返回的是一个新的字符串,原来的字符串并没有改变!,以后就要使用新返回的字符串来进行运算!!!



TransformChinese.h

#import <Foundation/Foundation.h>


@interface TransformChinese : NSObject

+(NSMutableString*)transformChinese:(NSMutableString *)str;

+(NSString*)transformChineseNsstring:(NSString *)str;

+(BOOL)compareChineseNsstring:(NSString *)str1 str2:(NSString *)str2;

+(BOOL)compareChinese:(NSMutableString *)str1 str2:(NSMutableString *)str2;

@end

TransformChinese.m

#import "TransformChinese.h"


@implementation TransformChinese

+(NSString *)transformChinese:(NSMutableString *)str{

    CFStringTransform((CFMutableStringRef)str,NULL, kCFStringTransformToLatin, false);

    CFStringTransform((CFMutableStringRef)str,NULL, kCFStringTransformStripDiacritics, false);

    return str;

}

+(NSString *)transformChineseNsstring:(NSString *)str{

    NSMutableString *str1 =[[NSMutableStringalloc]initWithString:str];

    CFStringTransform((CFMutableStringRef)str1,NULL, kCFStringTransformToLatin, false);

    CFStringTransform((CFMutableStringRef)str1,NULL, kCFStringTransformStripDiacritics, false);

    return str1;

}


+(BOOL)compareChineseNsstring:(NSString *)str1 str2:(NSString *)str2{

    NSString *str11 = [selftransformChineseNsstring:str1];

    NSString *str21 = [selftransformChineseNsstring:str2];

    if ([str11 compare:str21] ==NSOrderedDescending) {

        return YES;

    }

    else{

        return NO;

    }

}

+(BOOL)compareChinese:(NSMutableString *)str1 str2:(NSMutableString *)str2{

    NSString *str11 = [selftransformChinese:str1];

    NSString *str21 = [selftransformChinese:str2];

    if ([str11 compare:str21] ==NSOrderedDescending) {

        return YES;

    }

    else{

        return NO;

    }

}

@end



0 0