我正在制作一个需要将 ASCII 艺术存储到数据库中的应用程序。我以以下格式存储字符串。
"______\n |---------|-O\n/___________\\n|______________|\n\____________/"
当我检索数据并将其显示在标签中时,我希望解析换行符和反斜杠以显示 ASCII 艺术的真实形状。
我应该如何解析这种字符串?
我正在制作一个需要将 ASCII 艺术存储到数据库中的应用程序。我以以下格式存储字符串。
"______\n |---------|-O\n/___________\\n|______________|\n\____________/"
当我检索数据并将其显示在标签中时,我希望解析换行符和反斜杠以显示 ASCII 艺术的真实形状。
我应该如何解析这种字符串?
NSString 有一种方法可以做你想做的事,即用换行符(符号为 \n)替换一个文字 \n。在 c 格式的字符串中,您可以使用双斜杠让库知道第二个 slach 是真实的,而不是转义符号。因此,假设您已经能够将数据从 sqlite 加载到 NSString 中,这应该可以工作:
newString = [yourStringFromSQLite stringByReplacingOccurrencesOfString:@"\\n" withString:@"\n"];
如果您使用 \n 只是为了创建新行,那么在数据库中插入值时保留空间并为标签设置以下属性 - >
1)保持宽度仅适合第一个单词。2)换行模式为自动换行(因此宽度将不可用,它将下一个单词换行)
3)设置否。行数为 0
希望这会有所帮助。
尝试使用扫描仪删除 html 实体
- (NSString *)flattenHTML:(NSString *)html trimWhiteSpace:(BOOL)trim {
NSScanner *theScanner;
NSString *text = nil;
theScanner = [NSScanner scannerWithString:html];
while ([theScanner isAtEnd] == NO) {
[theScanner scanUpToString:@"<" intoString:NULL] ;
[theScanner scanUpToString:@">" intoString:&text] ;
html = [html stringByReplacingOccurrencesOfString:[ NSString stringWithFormat:@"%@>", text] withString:@" "];
}
return trim ? [html stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] : html;
}
并在需要显示修剪后的字符串的地方调用此方法