我尝试使用以下代码删除|站立和终端公共汽车的符号不起作用。
"|aabckdoio|".replace("/^\|/g","").replace("/\|$/","")
答案 0 :(得分:4)
如果从正则表达式中删除了双引号,将工作。
如果您将字符串传递给.replace()
,它会执行普通字符串搜索和替换,而不是正则表达式搜索。
您还可以合并两个.replace
操作:
"|aabckdoio|".replace(/^\||\|$/g, "");
此外,如果您确定|
字符将始终存在,则可以在没有正则表达式的情况下完成:
"|aabckdoio|".slice(1, -1)
答案 1 :(得分:2)
如果您只需删除可以使用的第一个和最后一个字符:
var str = "|aabckdoio|".slice(1, -1);
str; // "aabckdoio"
答案 2 :(得分:1)
这是一个可能的解决方案,不使用正则表达式。使用String.indexOf,String.lastIndexOf和String.slice(可能使用String.substring稍加修改后的end
索引),但它只会删除匹配的起始或结束字符给定的论点。参数中的错误很安静(null
或undefined
除外),您可能希望它们有噪音,如果是这样,那么只需更改检查以适合您的风格/项目。
的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
上