簡體   English   中英

如何刪除 從開始到結束的符號

[英]How to remove | Symbol from start and end

我嘗試了以下代碼刪除| 站和末端總線上的符號無效。

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

如果您從正則表達式中刪除了雙引號,那起作用。

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

您還可以將兩個.replace操作結合使用:

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

另外,如果您確定可以確定| 字符將始終存在,您完全不需要正則表達式即可:

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

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

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

這是您不使用正則表達式的可能解決方案。 使用String.indexOfString.lastIndexOfString.slice (可以使用帶有稍微修改的end索引的String.substring ),但是僅在匹配給定參數的開始或結束字符時才刪除它們。 參數中的錯誤是安靜的( nullundefined除外),您可能希望它們嘈雜,如果是,則只需更改檢查以適合您的樣式/項目即可。

Java腳本

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上

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM