2015-09-14 834 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(@","); 
     } 
    }