Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

C#:Почему StringBuilder не прибавляет символы?

Артём Шориков Мастер (1719), на голосовании 5 лет назад
В следующем фрагменте кода, из одной задачи, которую я пытаюсь решить StringBuilder не прибавляет указанные символы, а просто возвращает пустую строку.
Например: входит ["abc"], а выходит [], вопрос, почему?

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using NUnit.Framework;

namespace TableParser
{
[TestFixture]
public class QuotedFieldTaskTests
{
[TestCase("''", 0, "", 2)]
[TestCase("'a'", 0, "a", 3)]
public void Test(string line, int startIndex, string expectedValue, int expectedLength)
{
var actualToken = QuotedFieldTask.ReadQuotedField(line, startIndex);
Assert.AreEqual(actualToken, new Token(expectedValue, startIndex, expectedLength));
}
}

class QuotedFieldTask
{
public static Token ReadQuotedField(string line, int startIndex)
{
int borderCount = 0;
for (int i = startIndex; i < line.Length; i++)
{
if (i != 0)
{
if (((line[i] == '\"') || (line[i] == '\'')) && (line[i - 1] != '\\'))
borderCount++;
}
else if ((line[i] == '\"') || (line[i] == '\''))
borderCount++;
}
var builder = new StringBuilder();
if (borderCount % 2 == 1)
borderCount++;
for (int i = startIndex; borderCount != 0 && i < line.Length;)
{
if (i != 0)
{
if (((line[i] == '\"') || (line[i] == '\'')) && (line[i - 1] != '\\'))
borderCount -= 1;
}
else if ((line[i] == '\"') || (line[i] == '\''))
{
borderCount -= 1;
}
else
builder.Append(line[i]);
}
line = builder.ToString();
return new Token(line, startIndex, line.Length - startIndex);
}
}
}
Голосование за лучший ответ
Голова Робота Просветленный (36360) 5 лет назад
Отладчик не помогает? Нельзя написать пример из нескольких строк, который больше ничего не делает кроме вызова StringBuilder.Append?
Скорее всего, проблема не в StringBuilder, а в алгоритме.
Максим Искусственный Интеллект (218908) 5 лет назад
Учись пользоваться отладчиком, это обязательный инструмент для программирования. Без него ты будешь как без глаз. Если в StringBuilder не добавляются символы, вероятно до Append дело просто не доходит.
Похожие вопросы