0

我有一个包含这种格式的字符串

" Item 1, Item 2, Another Item, 2004"

我想在 , 2004 拆分字符串并将其格式化以显示

" <em>Item 1, Item 2, Another Item</em>, 2004"

到目前为止我有这个

          var myString = "";
          var new_html = [];
          var splitstring = this.split(',');
               $.each(splitstring, function (idx) {
                   if (new_html.length == 0) new_html.push('<em>' + splitstring[idx] + '</em>');
                   else new_html.push(splitstring[idx]);
               });
                    myString+=("<span class='line"+index+"'>"+new_html.join(',') + "<br/></span>");

这是行不通的,但如果有人能指出我正确的方向,那就太好了。

4

2 回答 2

3

尝试使用这种模式:

/, (?=\d)/

这将匹配一个逗号,后跟一个空格,但前提是它后面跟着一个数字。

(?=...)是一个前瞻断言。它确保括号内的模式出现在匹配的子字符串之后,但它不包含在匹配中。

您可以像这样在拆分函数中简单地使用它:

var splitstring = this.split(/, (?=\d)/);
...

如果你想确保它后面跟着一个看起来像 4 位数的年份,你可以使用:

/, (?=\d{4})/

或者

/, (?=(?:19|20)\d\d)/

取决于您的确切需求。

于 2013-10-25T20:44:54.543 回答
1

为清晰和内联解释而编写多行。

var str = "Item 1, Item 2, Another Item, 2004"; 

var arr = str.split(','); //splitting by commas

var num = arr.pop(); //popping the last value '2004'

var result = '<em>'+ arr.join(',') + '</em>' + ',' + num; //joining back again

result: "<em>Item 1, Item 2, Another Item</em>, 2004"

如果num是一年,你可以检查为(num < 2099) && (num > 1990)(只是一个例子)并使用条件来做特定的事情

于 2013-10-25T20:45:52.120 回答