循环字符串以在字符集之间查找文本

时间:2013-12-04 13:50:48

标签: javascript regex string

我正在尝试创建一个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?

3 个答案:

答案 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