我有一个包含此格式的字符串
“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>");
这不会起作用,但如果有人可以指出我的方向很好。
答案 0 :(得分:3)
尝试使用此模式:
/, (?=\d)/
这将匹配一个逗号,后跟一个空格,但前后跟一个数字。
(?=...)
是一个先行断言。它确保括号内的模式出现在匹配的子字符串之后,但它不包含在匹配中。
您可以在分割函数中使用它,如下所示:
var splitstring = this.split(/, (?=\d)/);
...
如果你想确保它后面跟着你可以使用的4位数的东西:
/, (?=\d{4})/
或者
/, (?=(?:19|20)\d\d)/
取决于您的确切需求。
答案 1 :(得分:1)
为了清晰起见,写了多行&amp;内联解释。
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)
(仅作为示例)并使用条件来执行特定的操作