2016-08-18 50 views
0

我有一個類似搜索的函數,它接受一個字符串。我將這個字符串轉換爲數組。該字符串具有逗號以區分兩個單詞。從不同的格式化字符串中刪除空格並將其轉換爲數組的最佳方法

理想格式:
搜索項,進入 = XYZ,ABC,EEE,FFF

現在,如果用戶跟隨我的格式,我可以使用拆分,並得到我的數組但是如果:

搜索項輸入的 = ABC,XYZ,,,, EEE
搜索項輸入的 = ,ABC ,,,XYZ,EEE,FFF
或東西沿着這些線路

如果用戶使用一些其他的格式,我該如何擺脫多餘的空格呢?唯一可以考慮的是循環訪問數組並檢查是否爲空格並將其刪除。有一種更簡單的方法或方法嗎?

這是我的的getArray看起來像
getArray = search-term-entered.split(", ");

+0

的可能的複製[如何從在JavaScript的陣列除去null,未定義,NaN時,爲0,falses和空字符串?](http://stackoverflow.com/questions/36076104/how -to-remove-null-undefined-nan-0s-falses-and-empty-string-from-an-an-array-in) – 2016-08-18 10:50:53

+0

這幾乎是重複的,但我會爭論修剪數組條款的額外要求,新問題 – Joe

+0

像('abc xyz,abc')這樣的術語之間的空格是否有效? – Pugazh

回答

3

正如@RC指出,你可以找到如何已篩選出在這個網站空/空字符串的例子。但是爲了修剪空白區域,您可以使用以下內容。

var s = ', ,, abc, xyz,eee,fff'; 
getArray = s.split(",").map(s => s.trim()).filter(s => s); 
1

就像這樣。

var str = ', ,, abc, xyz,eee,fff'; 
 

 
function GetFilteredArr(_str) { 
 
    var arr = []; 
 
    var temp = _str.split(','); 
 
    temp.filter(function(v) { 
 
    var _v = v.trim(); 
 
    if (_v == "") 
 
     return false; 
 
    arr.push(_v); 
 
    }); 
 
    return arr; 
 
} 
 

 
var filterdArr = GetFilteredArr(str); 
 

 
console.log(filterdArr);

2
使用 String.match功能

簡單的解決方案:

var str = ', ,, abc, xyz,eee,fff', 
    converted = str.match(/\b\w+?\b/g); 

console.log(converted); // ["abc", "xyz", "eee", "fff"] 
0

另外一個:P

", ,, abc, xyz,eee,fff".replace(/[, ]+/g, " ").trim().split(" ") 
0

另一種方式可能是

var s = "abc, xyz, , ,,, eee", 
 
    a = s.replace(/(\s*,\s*)+/g,",").split(","); 
 
console.log(a);

相關問題