2011-04-22 82 views
2

全部取製表符,
過程:地圖平面文件到應用程序對象。
元數據:保存在Xml文件中。包含每個存儲在屬性中的字段名稱,分隔符和訂單號。
問題:在應用程序代碼中提取定界符屬性時,製表符(\ t)會如下所示:\\t(雙反斜槓t)。C#.NET從XML屬性

XML示例:

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

代碼示例:

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

問題:我想每個行分隔符的文件中分裂。喜歡的東西:

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

然而,因爲分隔符是\\t(雙反斜線T),Split函數不承認它。

問題:我應該剝離使用子字符串的第一個反斜槓(即使可能,因爲它是一個逃生)?有沒有不同的方式,我應該訪問Xml文件中的屬性,所以它不會逃避第一個反斜槓?任何信息,將不勝感激。提前致謝。

回答

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

這被解釋爲兩個字符\t,而不是作爲標籤 - 那是你的問題。

您可以編碼在XML標籤的方式如下:

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

像魅力一樣工作。謝謝! – 2011-04-22 17:42:28

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

這個工作的!四周的好工作。 – 2011-04-22 17:46:47