Визуализация художественной строки ASCII с символами новой строки и обратной косой чертой - PullRequest
0 голосов
/ 04 декабря 2010

Я создаю приложение, в котором есть требование хранить искусство ASCII в базе данных. Я храню строки в следующем формате.

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

Когда я извлекаю данные и отображаю их в метке, я хочу, чтобы символы новой строки и обратный слеш анализировались, чтобы отобразить реальную форму ASCII-рисунка.

Как мне разобрать строки такого типа?

Ответы [ 3 ]

0 голосов
/ 04 декабря 2010

попробуйте использовать сканер для удаления 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;
}

и вызовите этот метод, когда ваша обрезанная строка должна отображаться

0 голосов
/ 04 декабря 2010

Если вы используете \ n только для создания новых строк, тогда вместо этого просто оставьте место при вставке значения в базу данных и установите следующие свойства для метки ->
1) оставьте ширину, чтобы соответствовать первому слову.2) перевод строки в режим переноса слов (так как ширина не будет доступна, будет перенос следующего слова в новую строку)
3) установить номер.строк до 0
Надеюсь, это поможет.

0 голосов
/ 04 декабря 2010

У NSString есть метод, позволяющий сделать то, что вы хотите - заменить буквальный символ \ n символом новой строки (который обозначается \ n)В строке c-формата вы можете использовать двойную косую черту, чтобы библиотека знала, что второй slach является реальным, а не escape-символом.Так что это должно работать, если вы смогли загрузить свои данные из sqlite в строку NSString:

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