2016-12-13 50 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