我正在尝试形成一个变量。
如果不是null
或空或undefined
我不想将@
符号附加到其中:
var T1 = 'Popcorn'
var T2 = 'Icecreams'
var T3 = '';
var T4 = '';
if(T1!=''||T2!=''||T3!=''||T4!='')
reqstr = T1+'@'+T2+'@'+T3+'@'+T4;
alert(reqstr);
现在输出是:
爆米花@ @@冰淇淋
如果变量为空,我不想追加@
,这意味着我只需要:
爆米花@冰淇淋
答案 0 :(得分:5)
不是最清楚的Q.试试这个:
[T1,T2,T3,T4].filter(Boolean).join('@');
如果你想在你的变量中允许数字,你需要做更多的工作:
[T1,T2,T3,T4].filter(function(x){
return typeof x === 'number' || x;
}).join('@');
并允许数字,但过滤掉NaN
:
[T1,T2,T3,T4].filter(function(x){
return x === 0 || x;
}).join('@');
等等,取决于规格。
答案 1 :(得分:3)
试试这个:
if(T1!=''||T2!=''||T3!=''||T4!=''){
reqstr = T1+'@'+T2+'@'+T3+'@'+T4;
reqstr = reqstr.replace(/@@/g, '@').replace(/(^@+)|(@+$)/g, '')
}
第一个replace
删除字符串中的所有双@
。第二个删除任何前导或尾随。
答案 2 :(得分:0)
试试这个
var T1 = 'Popcorn'
var T2 = 'Icecreams'
var T3 = '';
var T4 = '';
reqstr = (T1)?(T1+'@'):'';
reqstr += (T2)?(T2+'@'):'';
reqstr +=(T3)?(T3+'@'):'';
reqstr +=(T4)?(T4+'@'):'';
console.log(reqstr);
alert(reqstr);
答案 3 :(得分:0)
您可以尝试将变量放入数组中,filter
输出所有空值,然后join
使用@
作为分隔符。
var T1 = 'Popcorn'
var T2 = 'Icecreams'
var T3 = '';
var T4 = '';
var arr = [T1, T2, T3, T4];
arr = arr.filter(function(e){ return e;}); // The filtering function returns `true` if e is not empty.
reqstr = arr.join("@")
console.log(reqstr);
alert(reqstr);