小编典典

从字符串中修剪特定字符

all

与此方法等效的 JavaScript 是什么:C#

var x = "|f|oo||"; 
var y = x.Trim('|'); //  "f|oo"

C# 仅在字符串的开头结尾 修剪所选字符!


阅读 64

收藏
2022-07-27

共1个答案

小编典典

一行就足够了:

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 的字符串)。

正如评论中提到的,支持多个字符可能很有用,因为例如修剪多个类似空格的字符是很常见的。为此,MightyPork建议将ifs
替换为以下代码行:

c = c.replace(/[-/\\^$*+?.()|[\]{}]/g, '\\$&');

这部分[-/\\^$*+?.()|[\]{}]是正则表达式语法中的一组特殊字符,$&是一个占位符,代表匹配字符,表示replace函数对特殊字符进行转义。在您的浏览器控制台中尝试:

> "{[hello]}".replace(/[-/\\^$*+?.()|[\]{}]/g, '\\$&')
"\{\[hello\]\}"
2022-07-27