Как сохранить экранирующие символы при добавлении строки в объект StringBuilder? - PullRequest
0 голосов
/ 22 января 2019

Я пытаюсь добавить строку ввода пользователя в StringBuilder, которую затем могу использовать в другом месте для отображения строки, которую я строю.Проблема в том, что когда пользователь выполняет возврат каретки, и я пытаюсь добавить, что в StringBuilder он удаляет escape-символы и, следовательно, возврат.

Например, допустим, пользователь вводит следующее:

Hello,

My name is Tom.

Когда я извлекаю эту строку из элемента управления textbox и передаю ее моему методу, который содержит StringBuilder, он выглядит следующим образом:

Hello,\r\nMy name is Tom. 

Но как только я добавляю ее в StringBuilder, она удаляет все escape-символыи становится таким:

Hello,My name is Tom. 

Это приводит к выводу:

Hello,My name is Tom

вместо:

Hello,

My name is Tom

Это метод, который вытягивает пользовательский вводиз ctrl

protected List<BetweenTagData> BetweenTagDataPull(string ctrlName)
{
    List<BetweenTagData> data = new List<BetweenTagData>();
    BetweenTagData pullIt = new BetweenTagData();

    if (ctrlName == "Label")
    {
        pullIt.text = TagLabelTxtbxEnterText.Text.ToString();
        data.Add(pullIt);
    }

    return data;
}

Это метод, который строит строку с использованием StringBuilder

static public string TagBetween(List<BetweenTagData> betweenData)
{
    StringBuilder betweenString = new StringBuilder();
    foreach (BetweenTagData row in betweenData.ToList())
    {
        if (row.text != "")
        {
            betweenString.Append(row.text);
        }
    }

    return betweenString.ToString();
}

1 Ответ

0 голосов
/ 22 января 2019

Я точно не знаю, в чем ваша проблема, но могу с уверенностью сказать, что типы StringBuilder не заботятся или не изменяют этот символ. Настоящая проблема более вероятна в классе BetweenTagData. Я также могу помочь вам улучшить существующие методы:

protected List<BetweenTagData> BetweenTagDataPull(string ctrlName)
{
    List<BetweenTagData> data = new List<BetweenTagData>();

    if (ctrlName == "Label")
    {
        data.Add(new BetweenTagData() {text = TagLabelTxtbxEnterText.Text});
    }

    return data;
}

static public string TagBetween(IEnumerable<BetweenTagData> betweenData)
{
    return string.Join("", betweenData.Where(bd => !string.IsNullOrEmpty(bd.text)).Select(bd => bd.text));
}
...