2014-10-27 4 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); 

Сейчас выход:

Popcorn @ Icecreams @@

Если переменная пуста, я не хочу добавлять @, то есть мне нужно только:

Popcorn @ Icecreams

Fiddle.

ответ

3

Попробуйте это:

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

Первый replace удаляет все двойные @ «S из строки. Второй удаляет все ведущие или конечные.

+0

'var T1 = 'Popcorn' var T2 = '' var T3 = ''; var T4 = ''; 'не должен возвращать' Popcorn'? – laaposto

+0

@laaposto: Приятная находка. Исправлена ​​проблема. – Cerbrus

+0

Спасибо вам большое, это прекрасно. – Kiran

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

Не ярчайший В .; попробуйте это:

[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

'join' ... Почему я не подумал об этом. +1 – Cerbrus

Смежные вопросы