2011-04-22 2 views
2

모두,
프로세스 : 맵 플랫 파일 - 응용 프로그램 개체.
메타 데이터 :은 XML 파일에 저장됩니다. 속성에 저장된 필드 이름, 구분 기호 및 순서 번호가 들어 있습니다.
문제 : 응용 프로그램 코드에서 구분 기호 특성을 가져 오는 경우 탭 문자 (\ t)는 \\t (이중 백 슬래시 t)과 같이 나타납니다.C# .NET에서 XML 특성 가져 오기 탭 문자

XML을 샘플 :

<field name= "Field1" delimiter='\t' orderNum="1"/> 

코드 샘플 :

attrVal = node.Attributes["delimiter"].Value; 

문제 : 나는 구분 기호에 파일의 각 행을 분할하기 위해 노력하고있어. 같은 뭔가 : 구분 기호가 \\t (더블 백 슬래시 t)이기 때문에

string [] delim = new string[] { attrVal }; 
string line = streamReader.ReadLine(); 
string[] record = line.Split(delim, StringSplitOptions.None); 

그러나, 스플릿 (Split) 기능을 인식하지 못합니다.

질문 : 부분 문자열을 사용하여 첫 번째 백 슬래시를 제거해야합니까 (탈출구이기 때문에 가능합니까)? 첫 번째 백 슬래시가 이스케이프되지 않도록 Xml 파일의 특성에 액세스해야하는 다른 방법이 있습니까? 모든 정보를 주시면 감사하겠습니다. 미리 감사드립니다.

답변

3
<field name= "Field1" delimiter='\t' orderNum="1"/> 

이는 두 문자 탭으로 \t 및하지로 해석됩니다 - 그게 문제입니다.

당신은 XML에서 탭을 다음과 같은 방법을 인코딩 할 수는 :

<field name= "Field1" delimiter="&#x9;" orderNum="1"/> 
+0

매력처럼 작동했습니다. 감사! –

3

당신은 Regex.Unescape(string)를 사용하여 시도 할 수 있습니다.

String str = "string \\nstring"; 
Console.WriteLine(str); 

Prints: 

string \nstring 

String str = "string \\nstring"; 
Console.WriteLine(Regex.Unescape(str)); 

Prints: 

string 
string 
+0

이는 잘 작동합니다! 주위 모든 위대한 직업. –