Заменить текст в шаблоне с помощью JavaScript - PullRequest
0 голосов
/ 30 апреля 2019

Я работаю в квитанции.

У меня есть шаблон HTML как:

var Mytemplate= "Test Receipt
The receipt will be used tomorrow.
##start##  A
   B   C
   D
##end##
Here is more text"

Во время выполнения мне нужно заменить весь контент с «## start ##» до «## end ##», включая эти термины, на другую строку.

Я использую следующий код для извлечения текста:

String.prototype.extract = function(prefix, suffix) {
    s = this;
    var i = s.indexOf(prefix);
    if (i >= 0) {
        s = s.substring(i + prefix.length);
    }
    else {
        return '';
    }
    if (suffix) {
        i = s.indexOf(suffix);
        if (i >= 0) {
            s = s.substring(0, i);
        }
        else {
          return '';
        }
    }
    return s;
    };

var extracted_text=Mytemplate.extract("##start##","##end##");
var newContent=function(){
    var newText=make_something_with(extracted_text)  
    return newText||"This is my new content"
  }

Как я могу заменить содержимое с "## start ##" до "## end ##" на мой newContent? Можно ли улучшить эту задачу с помощью Regex?

1 Ответ

1 голос
/ 30 апреля 2019

Вы можете использовать метод substr () для объектов String, чтобы получить начальный индекс ## start ## и ## end ## внутри вашей строки, скопировать нужные части и создать новую строку с текстом перед ##начало ##, новый текст и текст после ## end ##.

var Mytemplate = "Test Receipt The receipt will be used tomorrow.##start##  A   B   C   D##end##Here is more text"
function replace(text, start, end, newText) {
  var tempString = text.substr(0, text.indexOf(start));
  var tempString2 = text.substr(text.indexOf(end) + end.length, text.length)
  return tempString + newText + tempString2;
}
console.log(Mytemplate);
Mytemplate = replace(Mytemplate, "##start##", "##end##", "this is some new text");
console.log(Mytemplate);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...