2010-12-04 6 views
0

ASCII 아트를 데이터베이스에 저장해야하는 경우 앱을 만들고 있습니다. 문자열을 아래 형식으로 저장합니다.개행 문자와 백 슬래시로 ASCII 아트 문자열 렌더링

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

I 데이터 및 디스플레이를 검색 레이블에서 ASCII 텍스트의 실제 모양을 표시 할 수 있도록 개행 문자와 백 슬래시를 파싱해야합니다.

이 문자열을 어떻게 파싱해야합니까?

답변

0

NSString에는 litteral \ n을 바꾸는 데 필요한 방법을 \ n으로 나타내는 개행 문자 (\ n로 표시)가 있습니다. C- 포맷 문자열에서 이중 슬래시를 사용하여 두 번째 슬래치가 실제 슬래시임을 알 수 있고 라이브러리에는 이탈 심볼이 없음을 라이브러리에 알릴 수 있습니다. 당신의 손질이 방법을 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; 
} 

를 제거하고 전화를위한 스캐너를 사용하는

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

시도 : 그래서 이것은 당신이있는 NSString에 sqlite가에서 데이터를로드 할 수있었습니다 가정 작동합니다 문자열을 표시해야합니다.

+1

그는 HTML 태그를 제거하려고하지 않습니다. 단지 '\ n'을 실제 개행 문자로 바꿉니다. –

+0

@Brad - 그러면 stringByReplacement가 가장 좋습니다. – Sri

0

새 줄을 만드는 데 단지 \ n을 사용하는 경우 데이터베이스에 값을 삽입하는 동안 레이블을 추가하고 다음 속성을 설정하십시오. ->
1) 너비를 단지 fi로 유지하십시오. 첫 번째 단어. 2) linebreakmode를 wordwrap로 바꿉니다 (너비를 사용할 수 없으므로 다음 단어를 줄 바꿈합니다)
3) 번호를 설정하십시오. 0 행의
희망이 도움이 될 것입니다.

관련 문제