2014-10-27 140 views
0

我想形成一個變量。用分隔符連接字符串,忽略空字符串

如果不是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

回答

3

試試這個:

if(T1!=''||T2!=''||T3!=''||T4!=''){ 
    reqstr = T1+'@'+T2+'@'+T3+'@'+T4; 
    reqstr = reqstr.replace(/@@/g, '@').replace(/(^@+)|(@+$)/g, '') 
} 

第一replace從字符串中刪除所有雙@的。第二個刪除任何領先或尾隨的。

+0

'var T1 ='Popcorn'var T2 =''var T3 =''; var T4 ='';'不應該返回'爆米花'? – laaposto 2014-10-27 11:07:52

+0

@laaposto:很好找。修復了這個問題。 – Cerbrus 2014-10-27 11:08:37

+0

非常感謝,這很好。 – Kiran 2014-10-27 11:13:52

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

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('@'); 

等等,具體取決於規格。

+0

'加入'...爲什麼我沒有想到這一點。 +1 – Cerbrus 2014-10-27 11:14:21