Stringbuilder在将其转换为字符串后添加反斜杠。 [英] Stringbuilder adds backslash after converting it to string.

查看:503
本文介绍了Stringbuilder在将其转换为字符串后添加反斜杠。的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

嗨我有一种情况,我想在字符串中添加引号。



Hi I have a situation in which I want to add inverted commas the the string.

static void Main(string[] args)
{
    int valueCounter = 0;
    int valueCount = 0;
    var valueBuilder = new StringBuilder();
    List<string> values = new List<string>();
    values.Add("AAAA");
    values.Add("BBBB");
    values.Add("CCCC");
    valueCount = values.Count;

    foreach (var value in values)
    {
        valueCounter++;
        if ((valueCounter - 1) > 0)
            valueBuilder.Append("\"");
        valueBuilder.Append(values[valueCounter - 1].ToString());

        if (valueCounter != valueCount)
        {
            valueBuilder.Append(@",");
        }
    }

    string output = valueBuilder.ToString();

}





valueBuilder给出结果为= {AAAA,BBBB,CCCC}

输出结果为=AAAA,BBBB,\CCCC



我希望输出为:AAAA,BBBB,CCCC



请帮助。



valueBuilder gives result as = {AAAA,"BBBB,"CCCC}
output gives result as = "AAAA,"BBBB,\"CCCC"

I want the output as : "AAAA","BBBB", "CCCC"

Please help.

解决方案

这是一个可能更简单的解决方案:



Here's a potentially simpler solution:

int valueCounter = 0;
foreach (var value in values)
{
  valueBuilder.Append('"');
  valueBuilder.Append(values[valueCounter].ToString());
  valueBuilder.Append("\",");
  ++valueCounter;
}

// Remove last comma if the StringBuilder has content.
if (valueBuilder.Length > 0)
  --valueBuilder.Length;


出现问题是因为您没有添加结束报价以双引号开头的字段。因此,当StringBuilder将其转换为字符串时,它会尝试转义浮动引号字符。



我怀疑你正在查看调试器中的变量,而不是比你的代码的实际输出。



但是我怀疑你的代码应该在字段之后以及之前添加引号,如:

The problem occurs because you do not add a closing quote to the field that begins with a double quote. So when StringBuilder converts it to a string it tries to escape the floating quote character.

I suspect you are looking at the variables in the debugger, rather than the actual output of your code.

However I suspect your code should be adding quotes after the fields as well as before them like:
if ((valueCounter - 1) > 0)
    valueBuilder.Append("\"");
valueBuilder.Append(values[valueCounter - 1].ToString());
if ((valueCounter - 1) > 0)
    valueBuilder.Append("\"");


这篇关于Stringbuilder在将其转换为字符串后添加反斜杠。的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆