3

我正在寻找一个 javascript 函数,它接受一个字符串参数并检查低于 32 的 ascii 字符,将它们替换为空字符串->“”。我是 javascript 新手,所以我想知道是否有人能指出我正确的方向?

在此先感谢您的时间。

4

3 回答 3

7

试试这个:

var replaced = string.replaceAll("[^ -~]", "");

使用^否定字符类,并且由于空格是 ASCII 表中的字符 32 并且 ~ 是最后一个可打印字符,因此您基本上是在说“所有不是可打印字符”。

要简单地删除 0-31 中的所有字符,请使用:

var replace = string.replaceAll("\x00-\x1F", "");
于 2012-11-15T13:34:35.303 回答
1

如果我正确理解您的问题,您正在寻找与 .replace 一起使用的正则表达式...

要替换任何可打印的 ascii 字符,您可以使用此正则表达式:

/[ -~]/

您可能需要调整范围。我建议更改 tilder,因为它是最后一个可打印的字符。

对不起,我明白你的意思了!我认为你不能匹配不可打印的字符,除非使用它们的特殊符号:即 \b \s \n 等。

于 2012-11-15T13:29:10.327 回答
1
function keepCharsAbove(inStr, charCode) {
  var goodChars = [];
  for(var x = 0; x < inStr.length; x++) {
      if(inStr.charCodeAt(x) > charCode) {
          goodChars.push(inStr.charAt(x));
      }
  }

  return goodChars.join("");
}

​ 用途:

keepCharsAbove("foo \t bar",32); // returns 'foobar'
于 2012-11-15T13:34:48.093 回答