2016-11-09 22 views
-2

的末尾刪除不需要的豎條我有相當類似的輸入到輸出的代碼的情況,因爲這一個: http://plnkr.co/edit/eBjenGqgo3nbnmQ7XxF1?p=preview在字符串JS

我使用AngularJS 1.5.7。我的輸入 - (第一個)textarea使用的Ng指令與Plunkr(ng-list,ng-trim ...)中顯示的指令相同。我的輸出與Plunkr例子不同,顯示在(第二個)textarea中,但邏輯非常相似。 $ scope.outputValue是一個輸出數組,我轉換爲字符串,事後實施1個正則表達式:

$scope.outputValue = $scope.outputValue.toString(); 
$scope.outputValue = $scope.outputValue.replace(/,/g, " | "); 

問題是,生成的字符串總是添加一個額外的「|」在其本身並不是目的。很多時候,一個輸出看起來像這樣如果用戶通過第一文本區域內一對夫婦空數組項:

var foo = "one | two | three | four | | | | |"; 

但我真正需要顯示的是:

var foo = "one | two | three | four"; 

唯一令重要的是要刪除所有的「|」附加到字符串的末尾作爲','的替代,但輸出可以有「|」值,因此:

var foo = "one| | ||two| | three| | four||"; 

也將是一個有效的輸出。

類似的事情發生在Plunkr的例子中,因爲它產生空的數組項並以逗號分隔。

是否有任何RegExp可能對此問題有用?

感謝,內納德

+0

請加上''one | | || two | | three | | four ||「''的結果。 –

+0

@NinaScholz這是結果,輸入將是:[「one |」,「|| two |」,「three |」,「four ||」]是一個數組,稍後將被轉換爲字符串 – kneles90

+0

你從另一個角度引入另一個方面,從數組中進行。請用一些更多的用例更新你的問題,eiter作爲數組或字符串以及想要的結果。對於我來說,如果有一個隱藏在數組中的規則,我想用值更好地使用數組。 –

回答

1

而非陣列做toString().replace()的,使用.join()

function transform(stringArray) { 
     return stringArray.join(" | "); 
    }; 

    //names = ["morpheus","neo","trinity"] 
    //output = morpheus | neo | trinity 

DEMO on PLNKR


它仍然在最後輸出豎線字符,如果你沒有通過在數組項的任何值。

添加過濾器,以除去那些只有空白的項目:

function transform(stringArray) { 
     var filteredArray = stringArray.filter((s)=>(s.trim())); 
     return filteredArray.join(" | "); 
    } 

DEMO on PLNKR

+0

如果您未在數組項中傳遞任何值,它仍會在最後輸出垂直欄字符。嘗試點擊幾個空格,然後返回以查看我的意思。 Tnx雖然 – kneles90

+0

添加了空白項的過濾器 – georgeawg

0

嘗試使用分片,因爲這樣的:

foo = foo.slice(0,-1) 
1

您可以使用正則表達式。

var foo = "one | two | three | four | | | | |"; 
foo = foo.replace(/(\s?\|)+$/g, ''); 
console.log(foo); //one | two | three | four 

在這裏,您可以在JavaScript中瞭解更多關於正則表達式。

MDN Regular Expressions

MDN String.prototype.replace()