C#从文本文件中读取制表符作为设置

本文关键字:制表符 设置 读取 文本 文件 | 更新日期: 2023-09-27 18:20:25

你好,我今天加入了。

我在文本文件中有一个设置。

日志分隔符=''t

这将在启动期间读取到Properties。Settings(字符串)中。

当我把它读成字符串时,它将变成"''''t"

所以我有一个临时的解决方案来保持工作:

if (Properties.Settings.Default.logSeparator == "''t") { //trim 't
            Properties.Settings.Default.logSeparator = "'t";
            Properties.Settings.Default.Save();
        }

应该有一些简单的方法来清理这个字符串并使其成为字符

"''t",现在,如果最终用户决定开始使用例如"''r"作为分隔符

角色,它不会起作用。

我看起来像这样简单:字符串名称替换("''''","''");//(这不起作用)

请帮忙,我相信必须有一种简单干净的方法来做到这一点,然而,花了很长时间在谷歌上试图弄清楚这一点却什么都找不到。

C#从文本文件中读取制表符作为设置

您的问题在于如何将这些内容转换为选项卡。在您的文件中,它只是普通字符:'t。但实际的选项卡字符不同。当C#处理文本字符串时,它会将't转换为您的选项卡(除非您告诉它不要使用@字符串前缀)。

所以你需要做的是模仿替代。你已经尝试过了,但是瞄准了错误的角色。你需要做的是:

string_name.Replace("''t", "'t")

有更好的方法来替换控制字符,您可能需要考虑允许使用转义反斜杠。但在最基本的层面上,这应该会让你继续前进。

如果您只使用字符串。格式化(logSeparator)它会转换它。你不需要做''剥离。我猜你在观察窗口中看到的将是角色序列的转义版本。即字符串''t将在监视窗口中显示为''''t,以将其与制表符区分开来——字符串中实际上没有两个反斜杠。

由于反斜杠是由C#自动转义的,所以最后一个字符不包括反斜杠。

我建议将logSeparator的类型更改为char,因为每当使用字符串时都会发生这种行为。这里有一个简单的方法,它取一个字符串,并根据字符串中的最后一个字符返回正确的控制字符:

    private char GetSeparator(string Input)
    {
        char separator = new char();
        switch (Input.Last())
        {
            case 't':
                separator = ''t';
                break;
            case 'r':
                separator = ''r';
                break;
        }
        return separator;
    }

您可以很容易地添加所需的任何其他案例语句。我假设您使用的是readline方法,以便修剪换行符。如果没有,那可能需要先做。