C# 用等效字符串表示字符

C# 用等效字符串表示字符,c#,string,formatting,char,C#,String,Formatting,Char,我有以下类作为列表框的数据源: class SeparatorChars { /// <summary> /// Text to describe character /// </summary> public string Text { get; set; } /// <summary> /// Char value of the character /// </summary>

我有以下类作为列表框的
数据源

class SeparatorChars
{
    /// <summary>
    /// Text to describe character
    /// </summary>
    public string Text { get; set; }

    /// <summary>
    /// Char value of the character
    /// </summary>
    public char Value { get; set; }

    /// <summary>
    /// Represent object as string
    /// </summary>
    /// <returns>String representing object</returns>
    public override string ToString()
    {
        return Text + " '" + Value + "'";
    }
}
字符串表示形式为:

Tab '     '
但我需要它

Tab '\t'

怎么做

这里有一篇带有一些示例代码的博文:

无可否认,大部分内容都是从中剽窃的,而且没有经过测试

public override string ToString()
{
    return ToLiteral(Text + " '" + Value + "'");
}

private string ToLiteral(string input)
{
    var writer = new StringWriter();
    CSharpCodeProvider provider = new CSharpCodeProvider();
    provider.GenerateCodeFromExpression(new CodePrimitiveExpression(input), writer, null);
    return writer.ToString();
}

\t
是制表符。看起来您在
''
之间有一个选项卡。我觉得不错。我错过什么了吗?为什么要输出字符串
\t
?问题是,我希望它在ToString方法中显示\t而不是普通的制表符。然后不要使用制表符,而是字符串
\t
。不,我需要使用实数字符作为Value属性,因为我要将它传递给另一个类。如果我这样做,例如
var comma=new SeparatorChars{Text=“comma”,Value=',}
这就可以了。看看这个问题。被接受的答案可能会对你有所帮助。看起来很像我会采取的方法。。。一个简单的查找表。嗯,谢谢,这在某种程度上是有效的…选项卡的表示现在是
“tab\'\t\'
似乎每一次都被转义了:P@Sean87:如果您这样使用它会怎么样:
returntoliteral(Value.ToString())?(我会自己测试它,但我马上就要去工作了,在linux机器上)。我想这是一样的,因为它会自动转换成字符串……这将再次是
“TAAAAAB!”而不是“\t”确定确定…我必须使用
返回文本+“->”+ToLiteral(Value.ToString())。替换(“\”,”);
:P谢谢!
public override string ToString()
{
    return ToLiteral(Text + " '" + Value + "'");
}

private string ToLiteral(string input)
{
    var writer = new StringWriter();
    CSharpCodeProvider provider = new CSharpCodeProvider();
    provider.GenerateCodeFromExpression(new CodePrimitiveExpression(input), writer, null);
    return writer.ToString();
}