replace 替换字符问题


getStr(str) {
            if (str) {
                str = str.replace(/-/g,'');
                console.log(str,'str')
                return str;
            }
        },

这个方法为什么把20220101 的0也去掉了呢?同学们 返回了202211

输入数据带0吗?

  • 这篇博客: 正则的replace方法详解中的 使用函数作为参数 部分也许能够解决你的问题, 你可以仔细阅读以下内容或跳转源博客中阅读:
  • 当匹配执行后,该函数就会执行。 函数的返回值作为替换字符串。
    参数:replacer(match, p1, p2, p3, offset, string)
    在这里插入图片描述实例

    function replacer(match, p1, p2, p3, offset, string) {
        return [p1, p2, p3].join(' - ');
    }
    var newString = 'abc12345#$*%()**'.replace(/([^\d]*)(\d*)([^\w]*)/, replacer);
    console.log(newString);  //abc - 12345 - #$*%dfghjk,()p
    

    在这里插入图片描述

  • 以下回答由chatgpt基于相关博客总结生成:

    我可以通过以下步骤给出具体的解决方案:

    1. 首先,根据参考资料中的闭包示例,我们可以使用闭包来封装私有变量和函数。下面是一个示例代码:
    (function() {
      // 私有变量和私有函数
      let privateVariable = 10;
      function privateFunction() {
        return false;
      }
      // 构造函数
      MyObject = function() {};
      // 公有和特权方法
      MyObject.prototype.publicMethod = function() {
        privateVariable++;
        return privateFunction();
      };
    })();
    var obj = new MyObject()
    obj.publicMethod() // 输出 false
    

    这个示例代码中,我们使用自执行函数创建了一个闭包,封装了私有变量和私有函数,然后在构造函数的原型上创建了一个公有方法publicMethod,这个方法可以访问闭包中的私有变量和函数,从而实现了对这些私有成员的封装和访问。

    1. 其次,根据参考资料中的模块模式示例,我们可以使用模块模式来创建一个单例对象,并使用闭包来实现私有成员的封装。下面是一个示例代码:
    function singleton() {
      // 私有变量和私有函数
      let privateVariable = 10;
      function privateFunction() {
        return false;
      }
      // 特权/公有方法和属性
      return {
        publicProperty: true,
        publicMethod() {
          privateVariable++;
          return privateFunction();
        }
      };
    }
    var foo = singleton();
    foo.publicMethod() // 输出 false
    

    这个示例代码中,我们定义了一个函数singleton,并在函数内部使用闭包来封装私有变量和函数。然后,函数返回一个对象,这个对象包含了公有的方法和属性,这样就可以通过这个对象访问和操作私有成员。

    以上就是我根据问题和参考资料给出的解决方案,希望对您有所帮助。如果还有其他问题,请随时提问。

getStr 方法的作用是将字符串中的连字符 - 去除,并返回结果。例如,如果输入字符串为 2022-01-01,则返回的字符串为 20220101。

在你提供的例子中,输入字符串为 2022-11,因此返回值应该为 202211。然而,你提到返回值为 202211,这表明方法返回的字符串并不包含最后一个字符 1。

根据你提供的信息,我猜测可能是在调用 getStr 方法时,输入的字符串 2022-11 实际上被解释成了数字类型,因此数字类型的末尾的 0 被忽略了。如果这个猜测是正确的,那么解决方法就是在输入字符串的两端添加引号,将其转换为字符串类型。例如,应该调用 getStr('2022-11') 而不是 getStr(2022-11)。

检查一下输入的数据~输入的数据是否不带0

img


如果对你有帮助,麻烦点一下采纳,谢谢。