与此方法等效的 JavaScript 是什么:C#
C#
var x = "|f|oo||"; var y = x.Trim('|'); // "f|oo"
C# 仅在字符串的开头 和 结尾 修剪所选字符!
一行就足够了:
var x = '|f|oo||'; var y = x.replace(/^\|+|\|+$/g, ''); document.write(x + '<br />' + y); ^ beginning of the string \|+ pipe, one or more times | or \|+ pipe, one or more times $ end of the string
一个通用的解决方案:
function trim (s, c) { if (c === "]") c = "\\]"; if (c === "^") c = "\\^"; if (c === "\\") c = "\\\\"; return s.replace(new RegExp( "^[" + c + "]+|[" + c + "]+$", "g" ), ""); } chars = ".|]\\^"; for (c of chars) { s = c + "foo" + c + c + "oo" + c + c + c; console.log(s, "->", trim(s, c)); }
参数c应为字符(长度为 1 的字符串)。
c
正如评论中提到的,支持多个字符可能很有用,因为例如修剪多个类似空格的字符是很常见的。为此,MightyPork建议将ifs 替换为以下代码行:
if
c = c.replace(/[-/\\^$*+?.()|[\]{}]/g, '\\$&');
这部分[-/\\^$*+?.()|[\]{}]是正则表达式语法中的一组特殊字符,$&是一个占位符,代表匹配字符,表示replace函数对特殊字符进行转义。在您的浏览器控制台中尝试:
[-/\\^$*+?.()|[\]{}]
$&
replace
> "{[hello]}".replace(/[-/\\^$*+?.()|[\]{}]/g, '\\$&') "\{\[hello\]\}"