0

我从 UTF-8 编码的 XML 文件中获取数据,并且我想显示 UITableView 中的每个元素。我希望我的单元格具有相同的大小并显示具有最多数据的前 2 个文本行,因此我尝试删除回车符。

在我的 cellForRow 方法中,我改变了这个:

[[myCell textLabel] setText:data];

经过 :

[[myCell textLabel] setText:[self correctData:data]];

这是我的正确数据方法:

- (NSString *) correctData : (NSString *) str
{
    NSMutableString *res = [NSMutableString stringWithFormat:@""];
    for(int i = 0 ; i < [str length] ; i++)
    {
        char car = [str characterAtIndex:i];
        if(car != 10 && car != 13) 
           [res appendString:[NSString stringWithFormat:@"%c",car]];
    }
    return res;
}

这正确地删除了回车,但它也改变了 UTF-8 字符。例如,一些初始字符串 (str) :

Diplômé(e) d'Etat

有了这个功能,它就变成了:

DiplÙmÈ(e) d'Etat

我该怎么办 ?谢谢。

4

1 回答 1

4

NSString适用于unichar存储在 16 位上而char只有 8 位长的字符。将 an 转换unichar为 achar将更改所有具有上述代码点的字符U+00FF

您可以通过替换charunichar来解决此%c问题%C

编辑:但这并不是很有效。您最好使用正则表达式一次替换所有换行符:

str = [str stringByReplacingOccurrencesOfString:@"[\r\n]+"
                                     withString:@""
                                        options:NSRegularExpressionSearch
                                           range:NSMakeRange(0, str.length)];
于 2012-06-06T12:49:14.430 回答