【问题标题】:Simple ascii replacement - Javascript简单的 ascii 替换 - Javascript
【发布时间】:2012-11-04 02:28:10
【问题描述】:

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

提前感谢您的宝贵时间。

【问题讨论】:

  • 另外,为什么?可能是更好的方法。
  • stackoverflow.com/questions/94037/… 这可能会有所帮助
  • 我的意思是,我想在字符串中查找并删除所有 ascii 值低于 32 的字符

标签: javascript regex


【解决方案1】:

试试这个:

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

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

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

var replace = string.replaceAll("\x00-\x1F", "");

【讨论】:

  • 查看我的编辑,我已经包含了如何匹配特定的字符代码,其中 1F 为 31。
  • 这将删除法语字母à
  • @Vitaly 不在办公桌上的 ATM 上,哪个代码是 à?您可以将“^à”或“^{在此处插入字符代码}”添加到正则表达式中,以使其从替换中排除:)
【解决方案2】:
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'

【讨论】:

  • 通过将输入转换为单个字符串数组、过滤数组 (Array.filter) 然后重新连接成字符串可能会更好。 (更实用的方法。)
【解决方案3】:

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

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

/[ -~]/

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

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

【讨论】:

    猜你喜欢
    • 2011-08-24
    • 1970-01-01
    • 2015-08-11
    • 2012-06-07
    • 1970-01-01
    • 1970-01-01
    • 2015-05-06
    • 2017-01-08
    • 2021-09-21
    相关资源
    最近更新 更多