用等价的字符串表示一个Char

本文关键字:一个 Char 表示 字符串 | 更新日期: 2023-09-27 18:19:22

我有以下类作为ListBox的DataSource:

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 + "'";
    }
}

问题是,默认情况下将使用Value作为添加到字符串中的常规字符,例如,如果我为Tab定义这样的类:

var TabSeparator = new SeparatorChars {Text = "Tab", Value = ''t'}

字符串表示将是:

Tab '     '

但是我需要它是

Tab ''t'

怎么做?!

用等价的字符串表示一个Char

不可否认,这篇文章的大部分内容都是未经测试的。

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();
}

下面是一篇带有示例代码的博客文章:Mark Gu: c#中的转义序列