使用分隔符连接字符串,忽略空字符串

时间:2014-10-27 11:00:57

标签: javascript

我正在尝试形成一个变量。

如果不是null或空或undefined我不想将@符号附加到其中:

var T1  = 'Popcorn'
var T2  = 'Icecreams'
var T3  = '';
var T4  = '';

if(T1!=''||T2!=''||T3!=''||T4!='')

reqstr = T1+'@'+T2+'@'+T3+'@'+T4;

alert(reqstr);

现在输出是:

  

爆米花@ @@冰淇淋

如果变量为空,我不想追加@,这意味着我只需要:

  

爆米花@冰淇淋

Fiddle

4 个答案:

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

JSFiddle