使用换行符和反斜杠渲染ASCII艺术字符串

时间:2010-12-04 09:13:15

标签: ios string cocoa-touch escaping ascii-art

我正在创建一个应用程序,其中需要将ASCII艺术存储到数据库中。我以下面的格式存储字符串。

“___________ \ n | --------- | -O \ n / ___________ \\ n | ______________ | \ n \ ____________ /”

当我检索数据并将其显示在标签中时,我希望解析换行符和反斜杠,以便显示ASCII艺术的真实形状。

我该如何解析这种字符串?

3 个答案:

答案 0 :(得分:0)

NSString有一个方法可以做你想要的,即用换行符替换一个小号\ n(用符号表示为\ n)。在c格式的字符串中,您可以使用双斜杠让库知道第二个slach是真正的slach而不是转义符号。因此,假设您能够将数据从sqlite加载到NSString中,这应该可以工作:

newString = [yourStringFromSQLite stringByReplacingOccurrencesOfString:@"\\n" withString:@"\n"];

答案 1 :(得分:0)

如果您正在使用\ n仅用于创建新行,那么只需在数据库中插入值时保留空间并为标签设置以下属性 - >
1)保持宽度只是为了适合第一个单词。 2)linewode到wordwrap(因为宽度将不可用,它会将下一个单词换行到新行)
3)设置否。的行数为0
希望这会有所帮助。

答案 2 :(得分:-1)

尝试使用扫描程序删除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;
}

并调用此方法,修剪后的字符串需要显示