Как прочитать текст документа HTML и заменить строку в скобках из ответа на вызов API - PullRequest
0 голосов
/ 28 сентября 2019

Я пишу создателю документа с помощью текстового редактора с тегами-заполнителями ([[tagname]]).Мне нужно иметь возможность отправлять текст HTML читателю, который найдет каждый заполнитель и заменит его текстом ответа от вызова API.

У меня есть служба чтения, принимающая текст HTML, и я попытался разделить (""), чтобы отделить каждое слово, пропустив слово через цикл for и вызвав метод расширения службы .Between на ("[[","]] ") чтобы найти заполнители.Затем я делаю переключение на заполнителях, которые он находит, и вызываю методы в службе чтения для выполнения вызовов API.Проблема в том, что конечным результатом является пустая строка.Я не уверен, что мне не хватает.

    public string ReadForm(FormViewModel formModel)
    {
        var form = "";

        var formText = formModel.FormText;
        formText.Split(" ");

        for (int i = 0; i < formText.Length; i++)
        {
            var formTextIndex = formText[i].ToString();
            var formTagItem = formTextIndex.Between("[[", "]]");
            if (formTagItem.ToString() != null)
            {
                switch (formTagItem)
                {
                    case "placeholder1":
                        formTagItem = GetItems1(formModel.ID);
                        form += $"{formTagItem} ";
                        break;
                    case "placeholder2":
                        formTagItem = GetItems2(formModel.ID);
                        form += $"{formTagItem} ";
                        break;
                    case "placeholder3":
                        formTagItem = GetItems3(formModel.ID);
                        form += $"{formTagItem} ";
                        break;
                    case "placeholder4":
                        formTagItem = GetItems4(formModel.ID);
                        form += $"{formTagItem} ";
                        break;
                    default:
                        form += $"{formTagItem} ";
                        break;
                }
            }
            else
            {
                form += $"{formText[i]} ";
            }
        }

        return form;
    }

Мой ожидаемый результат для формы будет то, что заполнители будут заменены возвращенными значениями, а затем будут заменены в тексте HTML.

1 Ответ

1 голос
/ 28 сентября 2019

Найти / Заменить может быть то, что вы ищете.

Использование операторов:

using System.Text.RegularExpressions;

Метод:

public string ReadForm(FormViewModel formModel)
{
    string formText = formModel.FormText;
    formText = formText.Replace("[[placeholder1]]", GetItems1(formModel.ID));
    formText = formText.Replace("[[placeholder2]]", GetItems2(formModel.ID));
    formText = formText.Replace("[[placeholder3]]", GetItems3(formModel.ID));
    formText = formText.Replace("[[placeholder4]]", GetItems4(formModel.ID));
    formText = Regex.Replace(formText, @"\[\[(.*?)\]\]", "$1");
    return formText;
}

Regex.Replace выполняет то, что делает блок default : заменяет все внутри тега именем внутри тега.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...