我从UTF-8编码的XML文件中获取数据,我想在UITableView中显示每个元素。 我希望我的单元格具有相同的大小,并显示尽可能多的数据的2个第一个文本行,所以我尝试删除回车。
在我的cellForRow方法中,我改变了这个:
[[myCell textLabel] setText:data];
通过:
[[myCell textLabel] setText:[self correctData:data]];
这是我的correctData方法:
- (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
我该怎么办?感谢。
答案 0 :(得分:4)
NSString
适用于存储在16位的unichar
个字符,而char
只有8位长。将unichar
转换为char
会改变代码点高于U+00FF
的所有字符。
您可以将char
替换为unichar
,将%c
替换为%C
来解决此问题。
编辑:但这并不是很有效率。您最好使用正则表达式替换所有换行符:
str = [str stringByReplacingOccurrencesOfString:@"[\r\n]+"
withString:@""
options:NSRegularExpressionSearch
range:NSMakeRange(0, str.length)];