2015-09-14 4 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 в строку, он добавляет обратную косую черту в строку.

Пожалуйста, помогите мне знать, как я могу получить желаемое, как: «АААА», «BBBB», «КПКГ»

+4

обратной косой не является частью строки, это просто как инструмент, который вы» re использование отображает его. – augurar

+1

Почему бы вам не удалить строку, которая добавляет символ '\' ?: valueBuilder.Append ("\" "); –

+0

Если вы должны были выполнить' System.out.println (output); 'вы не увидели бы обратная косая черта – 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 для отображаемую строку без кавычек/Unescaped:

output,nq 

enter image description here

-2

Просто удалите valueBuilder.Append("\"");

мою ошибку. Он просто избегает \

+0

Это не добавляет обратную косую черту. Это просто добавляет двойную кавычку. –

+0

Это вызовет ошибку. \ Требуется, чтобы избежать ". – JRSofty

-1

Использование кавычек в объекте Java String должно быть экранировано. \, о котором вы жалуетесь, отображается только в вашем инструменте и требуется, чтобы избежать ", чтобы не возникало никаких ошибок. Если вы должны были выполнить команду System.out.println(output);, вы не увидите символ \.

0

Я думаю, что следующий код для цикла foreach решит вашу проблему.

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

     if (++valueCounter != valueCount) 
     { 
      valueBuilder.Append(@","); 
     } 
    } 
Смежные вопросы