2013-06-13 49 views
1

我試過以下代碼來刪除|站立和末端總線的符號不起作用。如何刪除|從開始和結束的符號

"|aabckdoio|".replace("/^\|/g","").replace("/\|$/","") 
+5

你有一個正則表達式傳遞給'.replace',而不是字符串(至少在這種情況下)。即'/^\ |/g'而不是'「/^\ |/g」'。查看[MDN文檔](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Guide/Regular_Expressions)。 –

+0

我認爲之間//認爲是正則表達式的任何東西 –

+0

如果它在源頭「本身」,是的。但是你的'/.../'在一個字符串裏。考慮'var foo =「var bar」;'。它確實聲明瞭一個變量'foo'而不是一個變量'bar',因爲''var bar「'是一個字符串。該字符串不被評估爲JavaScript。 –

回答

1

這是一個可能的解決方案,無需使用正則表達式。使用String.indexOf,String.lastIndexOfString.slice(可能已使用String.substring並略微修改end索引),但它只會刪除開始或結束字符,如果它們與給定參數匹配。參數錯誤是安靜的(除了nullundefined),你可能希望它們很嘈雜,如果是這樣,那麼只要改變檢查以適應你的風格/項目。

的Javascript

var testString1 = "|aabckdoio|", 
    testString2 = "*|aabckdoio|*"; 

function trimChars(string, startCharacters /*, endCharacters */) { 
    string = {}.valueOf.call(string).toString(); 
    startCharacters = {}.valueOf.call(startCharacters).toString(); 

    var start = 0, 
     end = string.length, 
     startCharactersLength = startCharacters.length, 
     endCharacters = startCharacters, 
     endCharactersLength = startCharactersLength; 

    if (arguments.length > 2) { 
     endCharacters = {}.valueOf.call(arguments[2]).toString(); 
     endCharactersLength = endCharacters.length; 
    } 

    if (string.indexOf(startCharacters) === 0) { 
     start = startCharactersLength; 
    } 

    if (string.lastIndexOf(endCharacters) === end - endCharactersLength) { 
     end -= endCharactersLength; 
    } 

    return string.slice(start, end); 
} 

console.log(trimChars(testString1, "|")); 
console.log(trimChars(testString2, "*|", "|*")); 

輸出

aabckdoio 
aabckdoio 

jsfiddle

+0

感謝它運作相當不錯。 –

4

工作,如果您刪除從正則表達式的雙引號。

如果您將字符串傳遞給.replace()它會執行正常字符串搜索和替換,而不是正則表達式搜索。

您也可以將二者結合起來.replace操作:

"|aabckdoio|".replace(/^\||\|$/g, ""); 

另外,如果你肯定知道的|人物永遠在那裏,你可以不用正則表達式的所有:

"|aabckdoio|".slice(1, -1) 
+0

這只是刪除開始|符號 –

+0

@AbdulBasit幾秒鐘後有一個沒有'g'修飾符的版本 - 此處的版本(在Chrome上) – Alnitak

2

如果你只需要刪除第一和最後一個字符,你可以使用:

var str = "|aabckdoio|".slice(1, -1); 
str; // "aabckdoio" 
+0

ha,重疊編輯 - 我正在同時添加'.slice()'方法增加了這個答案 – Alnitak

相關問題