2015-09-14 836 views
0

我有一种情况,我想在该字符串中添加反向逗号。Stringbuilder在将其转换为字符串后添加反斜杠

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

    } 

enter image description here enter image description here

正如你所看到的,转换StringBuilder的字符串后,它增加了反斜杠的字符串。

请帮我知道我可以得到想要的出来为: “AAAA”, “BBBB”, “CCCC”

+4

反斜杠不是字符串的一部分,这是多么的工具,你”重新使用显示它。 – augurar

+1

你为什么不删除它增加了“\”字符行?:valueBuilder.Append(“\”“); –

+0

如果你执行'的System.out.println(输出);'你不会看到反斜线。 – JRSofty

回答

4

这里是您的代码的修正版本(固定在第一片段的包围):

string[] strArr = new string[] { 
    "AAAA", "BBBB","CCCC" 
}; 
StringBuilder sb = new StringBuilder(); 
for(int i = 0; i < strArr.Length; i++) { 
    sb.Append('"'); 
    sb.Append(strArr[i]); 
    sb.Append('"'); 
    if(i < strArr.Length - 1) 
     sb.Append(','); 
} 
var output = sb.ToString(); 

这是调试器显示如何导致(引述/转义视图):
enter image description here

这是它看起来很可读的格式: "AAAA","BBBB","CCCC"

提示&技巧:
可以使用nqformat-specifier显示字符串加引号/转义:

output,nq 

enter image description here

-2

只是删除valueBuilder.Append("\"");

我的错。它不只是逃避Java String对象的\

+0

不会添加一个反斜杠。它只是增加了一个双引号。 –

+0

这会导致错误。在\需要逃脱”。 – JRSofty

-1

使用引号必须转义。您所抱怨的\仅在您的工具中可见,并且需要转义"以避免发生错误。如果您要执行System.out.println(output);,您将看不到\字符。

0

我认为foreach循环下面的代码将解决您的问题。

foreach (var value in values) 
    { 
     value = "\""+value+"\""; 
     valueBuilder.Append(value); 

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