Core data 如何在sqlite3文本列返回的c字符串中使用换行符?
我想知道如何在sqlite3_column_text返回的c字符串中设置work换行控制字符。例如,这是从查询返回到sqlite数据库的文本:Core data 如何在sqlite3文本列返回的c字符串中使用换行符?,core-data,sqlite,nsstring,escaping,Core Data,Sqlite,Nsstring,Escaping,我想知道如何在sqlite3_column_text返回的c字符串中设置work换行控制字符。例如,这是从查询返回到sqlite数据库的文本: "Lorem ipsum\ndolor sit amet,\nconsectetur\nadipiscing elit." 这是我用来获取它的代码: char *body = (char *)sqlite3_column_text(statement, 1); NSString *str = (body)?[NSString stringWithUTF
"Lorem ipsum\ndolor sit amet,\nconsectetur\nadipiscing elit."
这是我用来获取它的代码:
char *body = (char *)sqlite3_column_text(statement, 1);
NSString *str = (body)?[NSString stringWithUTF8String:body]:@"";
当我尝试打印它时,问题就出现了,因为作为回报:
Lorem ipsum\ndolor sit amet,\nconsectetur\nadipiscing elit.
而不是:
Lorem ipsum
dolor sit amet,
consectetur
adipiscing elit.
使用相同的文本,但从核心数据中的字符串列返回的文本可以正常工作,但我不知道为什么在sqlite3中没有。我希望有人能给出指示,因为这很令人沮丧。问题是存储在sqllite数据库中的值是两个字符
\n
而不是换行符本身。在将字符串添加到数据库之前,您必须将\n
转换为换行符(ASCII 10),或者在Objective-C代码中的SELECT查询之后处理该字符串
有关更多信息,请参见以下答案:
查看SQLite的文档部分,我发现它返回两个字符\n
而不是换行符的原因是不支持使用反斜杠字符的C样式转义,因为它们不是标准SQL。因此,我尝试了另一种方法,使用NSString而不是直接使用SQLite:
char *body = (char *)sqlite3_column_text(statement, 1);
NSString *str = (body)?[NSString stringWithUTF8String:body]:@"";
NSString *container = [str stringByReplacingOccurrencesOfString:@"\\n"
withString:@"\n"];
多亏了帖子,我才想到用\\n
来正确替换最后一个NSString中的\n
,这样就可以使用其他有效的控制字符了。谢谢你的回答,真的很有帮助!不客气,雷蒙。考虑投票回答,如果他们帮助你,并接受一个最好回答你的查询。很高兴看到你满意地解决了这个问题。