我正在尝试创建一个JavaScript函数,它将从字符串中提取预定义的变量。在字符串中,这些变量将嵌套在“<>”中字符集。
例如:
用户键入的字符串可以是:I am <me> , my age is <myage>
然后将呈现文本:I am Joe Bloggs , my age is 21
(给定两个用户定义的变量'me'和'myage')
我已经开始使用拆分功能,但这并不顺利。
function parse_String(theString) {
var varSplit = theString.split("<");
};
是否有一个优雅的解决方案,使用javascript还是RegEx?
答案 0 :(得分:1)
您似乎在寻找'模板'功能。如果您将初始字符串格式化为此'I am {0}, my age is {1}'
,则可以使用此方法:
function stringFormat() {
var args = [].slice.call(arguments);
return this.replace(/(\{\d+\})/g, function(a) {
return args[ +(a.split(/[{}]/)[1]) || 0 ];
});
};
// usage
stringFormat.call('I am {0}, my age is {1}','Joe Bloggs','21');
//=> I am Joe Bloggs, my age is 21
您可以将方法添加到String.prototype
:
String.prototype.Format = stringFormat;
// usage
'I am {0}, my age is {1}'.Format('Joe Bloggs','21');
答案 1 :(得分:0)
您可以使用
var result = theString.substring(theString.indexOf('<')+1, theString.indexOf('>'))
答案 2 :(得分:0)
您可以简单地执行替换功能。我假设您想用自己的变量替换预定位置。
function parse(string, data) {
$.each(data, function (v, k) {
string = string.replace('<'+k+'>', v);
});
return string;
}
实施例
parse("<me> is <age> years old", {me:'Han', age:22});
输出:Han is 22 years old