【问题标题】:I need to take an inputted string, take the non-numeric characters out, and then if the string begins with a 1, remove the 1我需要取一个输入的字符串,取出非数字字符,然后如果字符串以 1 开头,则删除 1
【发布时间】:2018-04-11 20:31:08
【问题描述】:
function changeNumber(e) {
  var phoneNumber = e.replace(/\D/g, '');
  if (phoneNumber.startsWith("1")) {
    var finalNumber = phoneNumber.slice(0);
    return finalNumber;
  } else {
    return phoneNumber;
  };
};
console.log(changeNumber("+1 (234)-567.8995"));

期望的结果应该是:2345678995,但我得到的是 12345678995。好像它没有通过 if 语句。

【问题讨论】:

    标签: javascript regex string if-statement


    【解决方案1】:

    您需要从索引1 开始使用String#slice,因为您想省略索引0 处的第一个字符。

    phoneNumber.slice(0)
    

    返回字符串的副本,作为变量的赋值,但是

    phoneNumber.slice(1)
    

    从索引 1 和所有后续字符返回字符串。

    function changeNumber(e) {
        var phoneNumber = e.replace(/\D/g, '');
        return phoneNumber.startsWith("1")
            ? phoneNumber.slice(1)
            : phoneNumber;
    }
    
    console.log(changeNumber("+1 (234)-567.8995"));

    【讨论】:

    • 谢谢!你能解释一下为什么会这样吗?
    【解决方案2】:

    做了一个没有条件的更简洁的函数

    • \D 匹配所有非数字字符。
    • ^1 如果是字符串中的第一个字符,则匹配 1。

    function changeNumber(e) {
      return e.replace(/\D/g, '').replace(/^1/g, '');
    };
    console.log(changeNumber("+1 (234)-567.8995"));

    【讨论】:

      猜你喜欢
      • 2016-12-08
      • 2021-11-18
      • 1970-01-01
      • 1970-01-01
      • 2011-04-08
      • 1970-01-01
      • 2021-04-11
      • 2021-11-17
      • 1970-01-01
      相关资源
      最近更新 更多