2011-09-07 2 views
4

사용자가 지정한 텍스트를 처리하는 C# 응용 프로그램의 새로운 기능을 연구 중입니다. 이 텍스트에는 임의의 문자가 포함될 수 있지만 중괄호 ({}) 또는 대괄호 ([]) 사이에있는 모든 것은 특별한 방법으로 처리됩니다 (기본적으로 대괄호 안의 텍스트는 다른 텍스트로 대체되며 중괄호는 주어진 텍스트의 하위 섹션은 다르게 처리됩니다.)사용자 지정 언어에서 이스케이프 문자 처리

그래서 사용자가 텍스트에 중괄호와 괄호를 사용할 수있게하려는 것이므로 처음에는 "{{"를 사용하여 "{"를 나타내고 다른 모든 특수 문자 , 그러나 이것은 문제를 줄 것이다. 그가 하위 섹션을 열려고하고 하위 섹션의 첫 번째 문자를 "{"로하고 싶다면 "{{{"을 쓰겠습니다. 그러나 하위 섹션 앞에있는 문자를 원하는 경우 쓰는 것과 똑같습니다. "{". 그래서 이것은 모호함을 야기합니다.

이제 "\"를 사용하여 중괄호와 대괄호를 이스케이프하고 "\\"을 사용하여 "\"를 나타낼 수 있다고 생각합니다. 그리고 나는 이것을 처리하는 방법을 알아 내고 있지만 휠을 재발 명하려는 느낌이 들었습니다. 내가하려는 일을하는 알려진 알고리즘이나 라이브러리가 있는지 궁금해.

답변

1

왜 특수 문자 대신 XML 태그를 사용합니까?

<section> 
Blah blah blah blah <replace id="some identifier" /> 
</section> 

이 방법을 사용하면 Microsoft .NET 및 기타 플랫폼의 모든 XML 파서를 사용하여 텍스트를 구문 분석 할 수 있습니다. 탈출 할 것이 없으므로 시간을 절약 할 수 있습니다.

+0

문제는 그 종류 그들이 입력 할 텍스트의 대부분은 HTML과 XML 일 가능성이 있으므로 모든 '<' and '>'을 탈출해야합니다. – Ahmet

+0

CDATA를 사용하지 않는 한. 이 접근법에 대한 다른 좋은 점은 나중에 언어를 재정의 할 필요가없는 기능을 추가하려는 경우입니다. 그것에 대해 생각할 것입니다 :) – Ahmet

+0

HTML과 XML이라면 처리를 위해 맞춤 요소를 도입하는 것이 무엇이 문제입니까? –

1

텍스트에서 \를 사용하여 이스케이프 처리 {}하고 하위 섹션을 둘러싸 기 위해 이스케이프 처리되지 않은 {}을 사용하는 것이 좋습니다. 이것은 C#이 "문자열에서 문자"를 처리하는 방법입니다. 이중 중괄호를 사용하면 모호함이 생기고 텍스트를 올바르게 처리하는 것이 불가능하지는 않더라도 어렵게됩니다. 또한 개발자가 대상 사용자에 따라 다릅니다. 개발자는 이스케이프 문자를 사용하는 것이 편리하지만, -dev users <sub></sub>과 같은 태그를 사용하여 하위 섹션을 나타낼 수 있습니다. 정규 표현식을 사용하여 RegEx.Matches 컬렉션으로 사용자의 텍스트를 구문 분석하여

2

왜 사용하지 않습니까? 기존 마크 업 규칙? 선택할 수있는 가벼운 구문이 많이 있지만 사용자 인구에 따라 일부는 이미 MediaWiki 마크 업 및/또는 BBcode 및/또는 reST 및/또는 Markdown에 익숙 할 수도 있습니다.

관련 문제