我在收据上工作。
我有一个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"
}
如何用newContent替换从'## start ##'到'## end ##'的内容? 使用Regex可以使这项任务更好吗?
答案 0 :(得分:1)
您可以利用String对象的substr()方法来获取字符串中## 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);