如何删除|从开始和结束的符号

时间:2013-06-13 11:03:12

标签: javascript regex

我尝试使用以下代码删除|站立和终端公共汽车的符号不起作用。

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

3 个答案:

答案 0 :(得分:4)

如果从正则表达式中删除了双引号,工作。

如果您将字符串传递给.replace(),它会执行普通字符串搜索和替换,而不是正则表达式搜索。

您还可以合并两个.replace操作:

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

此外,如果您确定|字符将始终存在,则可以在没有正则表达式的情况下完成:

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

答案 1 :(得分:2)

如果您只需删除可以使用的第一个和最后一个字符:

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

答案 2 :(得分:1)

这是一个可能的解决方案,不使用正则表达式。使用String.indexOfString.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