我尝试使用以下代码删除 | 站和终端总线的符号它不起作用。
"|aabckdoio|".replace("/^\|/g","").replace("/\|$/","")
我尝试使用以下代码删除 | 站和终端总线的符号它不起作用。
"|aabckdoio|".replace("/^\|/g","").replace("/\|$/","")
如果您从正则表达式中删除双引号,它将起作用。
如果您将字符串传递给.replace()
它,它将执行正常的字符串搜索和替换,而不是正则表达式搜索。
您还可以将这两种.replace
操作结合起来:
"|aabckdoio|".replace(/^\||\|$/g, "");
此外,如果您确定|
字符将始终存在,您可以完全不使用正则表达式:
"|aabckdoio|".slice(1, -1)
如果您只需要删除第一个和最后一个字符,您可以使用:
var str = "|aabckdoio|".slice(1, -1);
str; // "aabckdoio"
这是一个可能的解决方案,无需使用正则表达式。使用String.indexOf,String.lastIndexOf和String.slice(可以使用带有稍微修改索引的String.substringend
),但如果它们匹配给定的参数,它只会删除开始或结束字符。参数中的错误是安静的(除了null
or 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