要在数组的dispayfield中创建一个列表,我使用以下代码将数组项从逗号分隔开来,':
'fragrance_list': ["fragrance one" , "fragrance two", "fragrance seven";
xtype: 'displayfield',
name: 'fragrance_list',
bind: '{record.fragrance_list}',
renderer: function (value, field) {
if (value && value.indexOf(',') > -1) {
this.rndTpl = this.rndTpl || new Ext.XTemplate('<div style = "line-
height: 150%;' +
'margin-left: -25px; margin-top: -12px; padding-left: 5px; padding-
right: 5px;">' +
'<ul><li>{[values.fragrance_list.replace(/,/g, "<li/>")]}</li></ul>'
+
'</div>');
return this.rndTpl.apply({
fragrance_list: value
});
} else {
return ' ' + value
}
}
返回类似的内容:
. fragrance one
. fragrance two
. fragrance seven
问题是当其中一个数组项(可能位于数组的不确定位置)的字符串中有一个或多个逗号时:
'fragrance_list': ["fragrance one" , "fragrance two", "fragrance A, n.º 5", "fragrance 7";
返回
. fragrance one
. fragrance two
. fragrance A
. n.º 5
. fragrance 7
代替
. fragrance one
. fragrance two
. fragrance, n.º 5
. fragrance 7
任何想法如何解决这个问题?
答案 0 :(得分:3)
我不完全确定您的代码结构,但如果它是一个您要剪切的长字符串,您可以将引号本身添加到regex
:
'<ul><li>{[values.fragrance_list.replace(/" {0,}, {0,}"/g, "<li/>")]}</li></ul>'
因此regex
将匹配:
但是,如果您尝试按数组中的值构建列表(即使它是一个包含一个元素的数组),那么正确的方法是使用map
函数执行此操作:
arrOfData.map( function(dataUnit){
renderString += "<li>" + dataUnit + "</li>";
});
或es6
语法
arrOfData.map( dataUnit => renderString += `<li>${dataUnit}</li>`);
答案 1 :(得分:0)
>var frag= (fragrance_list.indexOf(' "," ') > -1)?fragrance_list.split('","'):fragrance_list;
for first&amp;最后:
firstfrag=frag[0].split(' " ')[1];
lastfrag=frag[frag.length-1].split(' " ')[0];