IOS - 统一code Unsign [英] IOS - Unicode Unsign

查看:128
本文介绍了IOS - 统一code Unsign的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我用C#编写一个函数,我想将其转换为目标c。怎么办呢?

 公共静态字符串的Uni codeUnSign(字符串s)
{
    常量字符串单字符= \"àáảãạâầấẩẫậăằắẳẵặèéẻẽẹêềếểễệđìíỉĩịòóỏõọôồốổỗộơờớởỡợùúủũụưừứửữựỳýỷỹỵÀÁẢÃẠÂẦẤẨẪẬĂẰẮẲẴẶÈÉẺẼẸÊỀẾỂỄỆĐÌÍỈĨỊÒÓỎÕỌÔỒỐỔỖỘƠỜỚỞỠỢÙÚỦŨỤƯỪỨỬỮỰỲÝỶỸỴÂĂĐÔƠƯ\";
    常量字符串koDauChars = \"aaaaaaaaaaaaaaaaaeeeeeeeeeeediiiiiooooooooooooooooouuuuuuuuuuuyyyyyAAAAAAAAAAAAAAAAAEEEEEEEEEEEDIIIOOOOOOOOOOOOOOOOOOOUUUUUUUUUUUYYYYYAADOOU\";    如果(string.IsNullOrEmpty(多个))
    {
        返回S;
    }    字符串retVal的=的String.Empty;
    的for(int i = 0; I< s.Length;我++)
    {
        INT POS = uniChars.IndexOf(S [I]的ToString());
        如果(POS> = 0)
            retVal的+ = koDauChars [POS]
        其他
            retVal的+ = S [I]
    }
    返回retVal的;
}


解决方案

您可以使用的CoreFoundation CFStringTransform 函数做几乎所有的转换,从你的清单。只有DJ和DJ已被另案处理:

 的NSString *统一codeUnsign(的NSString * S)
{
    *的NSMutableString结果= ​​[S mutableCopy]
    //如果使用ARC编译__bridge只要求:
    CFStringTransform((__桥CFMutableStringRef)结果,NULL,kCFStringTransformStripCombiningMarks,否);    [结果rep​​laceOccurrencesOfString:@DJwithString:@D选项:0范围:NSMakeRange(0,[结果长度])];
    [结果rep​​laceOccurrencesOfString:@DJwithString:@D选项:0范围:NSMakeRange(0,[结果长度])];    返回结果;
}

例如:

 的NSString *输入= @世界,你好 - ếểễệđìíỉĩịòó!;
* NSString的输出=统一codeUnsign(输入);
的NSLog(@%@,输出);
//输出信息:Hello World! - eeeediiiiioo

I have a function written in C#, i want to convert it to objective-c. How to do it?

public static string UnicodeUnSign(string s)
{
    const string uniChars = "àáảãạâầấẩẫậăằắẳẵặèéẻẽẹêềếểễệđìíỉĩịòóỏõọôồốổỗộơờớởỡợùúủũụưừứửữựỳýỷỹỵÀÁẢÃẠÂẦẤẨẪẬĂẰẮẲẴẶÈÉẺẼẸÊỀẾỂỄỆĐÌÍỈĨỊÒÓỎÕỌÔỒỐỔỖỘƠỜỚỞỠỢÙÚỦŨỤƯỪỨỬỮỰỲÝỶỸỴÂĂĐÔƠƯ";
    const string koDauChars = "aaaaaaaaaaaaaaaaaeeeeeeeeeeediiiiiooooooooooooooooouuuuuuuuuuuyyyyyAAAAAAAAAAAAAAAAAEEEEEEEEEEEDIIIOOOOOOOOOOOOOOOOOOOUUUUUUUUUUUYYYYYAADOOU";

    if (string.IsNullOrEmpty(s))
    {
        return s;
    }

    string retVal = String.Empty;
    for (int i = 0; i < s.Length; i++)
    {
        int pos = uniChars.IndexOf(s[i].ToString());
        if (pos >= 0)
            retVal += koDauChars[pos];
        else
            retVal += s[i];
    }
    return retVal;
}

解决方案

You could use the CoreFoundation CFStringTransform function which does almost all transformations from your list. Only "đ" and "Đ" have to be handled separately:

NSString *UnicodeUnsign(NSString *s)
{
    NSMutableString *result = [s mutableCopy];
    // __bridge only required if you compile with ARC:
    CFStringTransform((__bridge CFMutableStringRef)result, NULL, kCFStringTransformStripCombiningMarks, NO);

    [result replaceOccurrencesOfString:@"đ" withString:@"d" options:0 range:NSMakeRange(0, [result length])];
    [result replaceOccurrencesOfString:@"Đ" withString:@"D" options:0 range:NSMakeRange(0, [result length])];

    return result;
}

Example:

NSString *input = @"Hễllö Wõrld! - ếểễệđìíỉĩịòó";
NSString *output = UnicodeUnsign(input);
NSLog(@"%@", output);
// Output: Hello World! - eeeediiiiioo

这篇关于IOS - 统一code Unsign的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆