将字符串转换为转义的字符

时间:2018-11-20 11:28:01

标签: c#

目标是要有一个字符串输入(来自前端),并且应该转换此字符串以使其在后端充当转义字符。

在下面的示例中,我希望用户编写“ \” +“ t”,后端应将其解释为“ \ t”(= tab char):

    var inputStr = @"\t"; // The input is a string written by a user: "\t" (backslash char + t char == @"\t" != "\t")
    var outputStr = SomeOperation(inputStr); // ???
    Console.WriteLine("A" + outputStr + "B <= should be tab separated");

我尝试过:

var outputStr = inputStr.Replace("\", "");

4 个答案:

答案 0 :(得分:1)

这不是内置的东西。最终,"\t" ==(长度为1的字符串,包含制表符)由C#编译器而非运行时实现。在运行时中尚无此实现,部分原因是每种语言(VB.NET,C#,F#等)可以有自己的规则。

您将需要使用自己的转义符定义来编写自己的实现。幸运的是,它主要是在.Replace(...)中进行的练习。尽管有 一些极端的情况需要考虑-特别是在订购方面-例如,如果\\变成\,而\n变成换行符; \\n变成\n吗?还是变成\(newline)?天真地完成了它,它可以最终变成(换行符)-即foo.Replace(@"\\",@"\").Replace(@"\n","\n")

答案 1 :(得分:0)

您可以执行以下操作:

void Main()
{
    Debug.Assert(ReplaceChar("hello\tworld", @"\t") == "helloworld"); // passed
}

string ReplaceChar(string str, string userInput)
{
    switch (userInput)
    {
        case @"\t":
            return str.Replace("\t","");
    }
    return str;
}

答案 2 :(得分:0)

我终于找到了一种简单的方法:

Regex.Unescape(inputStr);

有关更多详细信息,请参见documentation of the Regex.Unescape功能。

示例:

var ouptutStr = Regex.Unescape("\\t"); 
// ✓ Result: outputStr == "\t"

答案 3 :(得分:-1)

var outputStr = Char.Parse("\t").ToString();

  

A B <=应该用制表符分隔

此处未显示,但在控制台中看起来正确。