2016-12-13 48 views
0

我有一個使用Memorystream並寫入文本文件的API。我有與製表符分隔符字符串被轉換爲內存流,我不得不使用編碼代碼頁850進入MS DOS風格的txt文件。使用\ t字我試過,但它是越來越被視爲字面在字符串中添加製表符分隔符

string fieldDelimiter = @"\t"; 

var dataBuilder = new StringBuilder(); 
dataBuilder.Append(Field1); 
dataBuilder.Append(fieldDelimiter); 
dataBuilder.Append(Field2); 

var stream = MemoryStream(Encoding.GetEncoding(850).GetBytes(dataBuilder.ToString())); 
// API call to persist Stream to txt file. 

什麼是正確的方式去獲得的標籤分隔符在這種情況下。

+5

刪除**'@'**。 'const fieldDelimiter =「\ t」;'然後閱讀一些關於[String literals]的文檔(https://msdn.microsoft.com/en-us/library/aa691090(v = vs.71).aspx) –

回答

2

@符號指示CLR逐字地解釋下列字符串,忽略否則是轉義字符。換句話說,考慮到以下幾點:

const fieldDelimiter1 = @"\t"; 
const fieldDelimiter2 = "\\t"; 

fieldDelimiter1==fieldDelimiter2將評估爲true

正如L.B所述。放下@,你會得到你想要的結果。

+1

This應該是答案,而不是評論,因爲它實際上回答了問題。你應該儘量避免回覆評論,因爲我們不能接受評論作爲答案。 – mason

+1

是的,我討厭評論「功能」,但很好地捕捉到這一點,你將在50時刻! – Trey

+0

糟糕。我沒有認出我正在逃避反斜槓。謝謝 – Lin