我正在制作一个应用程序,要求将ASCII艺术存储到数据库中。我以下面的格式存储字符串。使用换行符和反斜杠呈现ASCII艺术字符串
“___________ \ N | --------- | -O \ N/___________ \\ N | ______________ | \ n \ ____________ /”
当我检索数据和显示它在标签中,我希望解析新行字符和反斜杠以显示ASCII艺术的真实形状。
我该如何解析这种字符串?
我正在制作一个应用程序,要求将ASCII艺术存储到数据库中。我以下面的格式存储字符串。使用换行符和反斜杠呈现ASCII艺术字符串
“___________ \ N | --------- | -O \ N/___________ \\ N | ______________ | \ n \ ____________ /”
当我检索数据和显示它在标签中,我希望解析新行字符和反斜杠以显示ASCII艺术的真实形状。
我该如何解析这种字符串?
NSString有一个方法来做你想做的事情,它是用一个换行符(它被象征为\ n)替换一个litteral \ n。在一个c格式的字符串中,你可以使用双斜线让图书馆知道第二个slach是一个真正的符号而不是一个转义符号。所以这应该假设你已经能够从源码加载数据到一个NSString:
newString = [yourStringFromSQLite stringByReplacingOccurrencesOfString:@"\\n" withString:@"\n"];
尝试使用扫描仪删除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;
}
,并调用此方法在您的修整字符串需要显示
如果您使用\ n只是创造新的生产线则不用的,仅仅保持空间,同时将数据库值和设定为如下标签属性 - >
1)保持宽度只是科幻第一个字。 2)将linebreakmode转换为wordwrap(因此宽度将不可用,它会将下一个单词换行为新行)
3)设置编号。的行到0
希望这会有所帮助。
我不是他试图剥离html标签的东西,只用实际换行符替换'\ n'的出现。 – 2010-12-04 10:16:03