internal void WriteColumn(string value)
{
if (value == null)
value = string.Empty;
// if it contains delimeter, quote, newline, we need to escape them
if (value.IndexOfAny(new char[]{'\"', '\r', '\n', _delimiter}) >= 0)
{
// make a string builder at the minimum required length;
StringBuilder builder = new StringBuilder(value.Length + 2);
// put in the opening quote
builder.Append('\"');
// double quote each quote
for (int i = 0; i < value.Length; i++)
{
builder.Append(value[i]);
if (value[i] == '\"')
{
builder.Append('\"');
}
}
// put in the closing quote
builder.Append('\"');
value = builder.ToString();
}
if (!_firstColumn)
{
// if we are not the first column, we write delimeter
// to seperate the new cell from the previous ones.
_writer.Write(_delimiter);
}
else
{
_firstColumn = false; // set false
}
_writer.Write(value);
}