【问题标题】:Remove part of string but getting the deleted part as result删除字符串的一部分,但得到删除的部分作为结果
【发布时间】:2017-12-04 13:37:59
【问题描述】:

所以,快速提问(在谷歌中搜索了很多,但只找到了与下面产生相同响应的答案):

代码:

var teste = '10/12/2017';
console.log(teste); //returns 10/12/2017
var teste_cut = teste.substr(6,2);
console.log(teste_cut); //returns only 20

我想要的是10/12/17。我无法更改字符串的创建方式,因此我需要在获得所述字符串后对其进行更改。是否存在这样做的方法,或者我应该使用其他功能?我现在感觉很愚蠢,因为它看起来是一个相当明显的答案,但我想我们都有愚蠢的时刻:P

【问题讨论】:

  • 使用正则表达式
  • 你不能只使用teste.substr(0,6) + teste.substr(8)

标签: javascript


【解决方案1】:

您可以简单地重建一个新的string,而不需要使用多个substr 的部分:

var test = '10/12/2017';
console.log(test);
var test_cut = test.substr(0,6)+test.substr(8,test.length);
console.log(test_cut)

【讨论】:

  • 谢谢!从来没有想过链接 substr ......我用一种非常丑陋的方式来分割字符串,编辑最后一项,然后他们重新加入结果。它有效,但您的方法更好:D PS:对于所有其他谈论日期方法的人,我不能使用它(我需要编辑的日期我在 AJAX 调用后收到的 Json 对象中),应该有说。我的坏...
【解决方案2】:

实现此目的的一种方法是剪切字符串的开头和结尾部分,然后将它们重新连接在一起,如下所示:

var teste = bookend('10/12/2017', 6, 7);
console.log(teste);

function bookend(str, start, end) {
  return str.substr(0, start) + str.substr(end + 1);
}

另一种方法是使用正则表达式来匹配您要保留的日期部分,然后将它们重新组合在一起:

var teste = '10/12/2017'.replace(/(\d{2}\/\d{2}\/)(\d{2})(\d{2})/, '$1$3');
console.log(teste);

【讨论】:

    【解决方案3】:

    带替换的简单正则表达式。匹配4个数字,保留最后两个。

    var t = '10/12/2017';
    console.log(t.replace(/\d{2}(\d{2})$/, '$1'))
    

    【讨论】:

      【解决方案4】:

      var teste = '10/12/2017'.replace(/(?=....$)../, '');
      console.log(teste);

      【讨论】:

        【解决方案5】:

        您可以将自定义函数用作 -

        function formatDate(d)
        {
            var month = d.getMonth();
            var day = d.getDate();
            var year = d.getFullYear();
            
            year = year.toString().substr(2,2);
            
            month = month + 1;
        
            month = month + "";
        
            if (month.length == 1)
            {
                month = "0" + month;
            }
        
            day = day + "";
        
            if (day.length == 1)
            {
                day = "0" + day;
            }
        
            return month + "/" + day + "/" + year;
        }
        
        var d = new Date('10/12/2017');
        console.log(formatDate(d));

        【讨论】:

          【解决方案6】:

          正确的方法是处理 Date 对象,它将确保您始终获得正确的年份。

          var newDate = new Date(teste);
          console.log(((newDate.getFullYear()).toString()).substr(2,2));
          

          【讨论】:

          • 第2行的newYear不应该是newDate吗?
          猜你喜欢
          • 2012-03-31
          • 2017-07-02
          • 2017-05-11
          • 2018-12-07
          • 1970-01-01
          相关资源
          最近更新 更多