2011-04-26 2 views
2

병합 메일에 대한 문자열 구문 분석 :나는 C# 프로젝트 작업과의 내가 같은 것을 포함하는 문자열이 있다고 가정하자하고

string content = "[IF FullName = 'Bob Smith']Hello my friend"; 
content += "[ELSEIF TotalPurchases > 1000]Dear valued customer"; 
content += "[ELSE]Dear [FirstName]"; 
content += "[ENDIF]"; 

과의 내가 키가 "하면 FullName있는 키/값 사전을 가지고 가정하자를 "및"TotalPurchases "및 값은"Jane Doe "및"500 "입니다. 내용을 분석하고 "IF ... ELSE ... ENDIF"를 평가하는 가장 좋은 방법은 무엇입니까?

내가 활용할 수있는 오픈 소스 프로젝트가 있습니까? 아니면 콘텐츠를 파싱하기 위해 자체 코드를 작성해야합니까?

답변

0

조금 혼란 스럽습니다. 그것은 정말로 당신의 문자열인가요? 아니면 C# 소스 코드에 의해 생성 될 문자열에 대해 이야기하고 있습니까?

지나치게 복잡하고 다소 전문적이 아니기 때문에 나는 후자라고 가정하고 아마도 나는 단지 그것을 직접 분석 할 것입니다. 내가 당신을 도울 수있는 쓴 text parser helper class도 있습니다.

+0

내 질문의 예는 조금 단순화되어 있지만 그것이 acutal 문자열 아주 가까이 있습니다. 내 목표는 "IF ... ELSE ... ENDIF"를 평가하여 최종 콘텐츠를 제작하는 것입니다. 예를 들어 내 데이터에 "Bob Smith"가 포함 된 경우 결과 데이터가 "Hello my friend"가되고 데이터에 "Jane Doe"가 포함되어 있고 Jane이 1,000 달러 이상을 지출 한 경우 결과 콘텐츠는 "Dear value customer"가됩니다. 헬퍼 클래스를 제공 해줘서 고맙지 만 내 필요에 너무 단순하다는 것이 두렵다. – desautelsj

+0

@desautelsj : 수업을 사용하지 않는다면 괜찮습니다. 하지만 저는 언어 해석기를 작성하는 데이 언어를 사용했다고 언급했습니다. 클래스는 그렇게 많이하지 않지만 저수준 파싱을 더 쉽게 만드는 기본 클래스로 사용합니다. –

+0

소리가 interresting ... 당신은 당신의 언어 통역사를 공유 할 수 있습니까? – desautelsj

0

위의 'If Else End If'텍스트 데이터를 실제 C# if 문 논리로 바꾸고 런타임시 동적으로 작성된 C# 텍스트를 컴파일하여 if 논리를 평가하는 것입니다. 기본 클래스는이 역동적 인 C#을 컴파일가에서는 CSharpCodeProvider 클래스가 될 것입니다 처리하는

에서는 CSharpCodeProvider 정보 http://msdn.microsoft.com/en-us/library/microsoft.csharp.csharpcodeprovider.aspx