开发者

Rendering an ASCII art string with newline characters and backslashes

开发者 https://www.devze.com 2023-01-28 02:56 出处:网络
I am making an app where there is a requirement to store ASCII art into a database. I store the strings in the below format.

I am making an app where there is a requirement to store ASCII art into a database. I store the strings in the below format.

"___________\n |---------|-O\n/___________\\n|______________|\n\____________/"

When I retrieve the data and display it in a label, I want the newline characters and backslashes to be parsed so as to display the real shape of the开发者_运维问答 ASCII art.

How should I parse this kind of strings?


NSString has a method to do what you want, which is to replace a litteral \n, with a newline character (which is symbolized as \n). In a c-format string you can use a double slash to let the library know the second slach is a real one and not an escape symbol. So this should work assuming you have been able to load your data from sqlite into an NSString:

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


If you are using \n just for creating new lines then instead of that just keep space while inserting value in database and set following properties for label ->
1)keep width just to fit first word. 2)linebreakmode to wordwrap (so as width will not be available it will wrap next word to new line)
3)set no. of lines to 0
Hope this will help.


try to use the scanner for remove the html entities

- (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;
}

and call this method where your trimmed string need to display

0

精彩评论

暂无评论...
验证码 换一张
取 消