【问题标题】:How to replace a string at a particular position如何替换特定位置的字符串
【发布时间】:2011-01-15 05:26:46
【问题描述】:

有没有办法在 java 脚本中的给定位置替换字符串的一部分。例如,我想将小时列中的00 替换为下面字符串中的12substring 出现在 13 到 15 之间。

Mar 16, 2010 00:00 AM 

【问题讨论】:

    标签: javascript string replace substring


    【解决方案1】:

    另一个创意可能是将其转换为数组splice 并将其转换回字符串。

    let str = "Mar 16, 2010 00:00 AM";
    let arr = str.split("");
    arr.splice(13,2,"1","2");
    str = arr.join("");
    

    【讨论】:

      【解决方案2】:

      你可以直接在Javascript中使用replace()方法和indexOf()字符串。

      【讨论】:

      • 你能详细说明一个例子吗?
      • @EuryPérezBeltré 我可以想到一个直接的方法来做到这一点:'Mar 16, 2010 00:00 AM'.replace('00:', '12:'),(即使不使用indexOf()
      【解决方案3】:

      以下是一种选择:

      var myString = "Mar 16, 2010 00:00 AM";
      
      myString = myString.substring(0, 13) + 
                 "12" + 
                 myString.substring(15, myString.length);
      

      请注意,如果您要使用它来操作日期,建议使用一些日期操作方法,例如 DateJS 中的方法。

      【讨论】:

      • 一种更快更简洁的方法:对于字符串的第二部分,使用myString.substr(15) - 这将获取从位置15 到字符串末尾的字符串。
      【解决方案4】:

      正则表达式方法

      "Mar 16, 2010 00:00 AM".replace(/(.{13}).{2}/,"$112")
      Mar 16, 2010 12:00 AM
      

      【讨论】:

      • 我喜欢这种方法,但如果有人担心性能,这里有一个测试比较:jsperf.com/substring-replace
      • 对,正则表达式通常较慢。我不会在 2016 年使用自己。
      • 慢了十倍,但仍然非常快,除非您需要每秒执行一百万次操作。
      【解决方案5】:

      如果在小时内总是00:

      您可以将00: 替换为12:

      使用replace()

      如果不是你需要找到indexOf : 字符,

      然后用12替换前面的2位。

      【讨论】:

        【解决方案6】:

        一种选择是

        >>> var test = "Mar 16, 2010 00:00 AM";
        >>> test.replace(test.substring(13,15),"12")
        

        【讨论】:

        • 不会给出“2010 年 3 月 16 日 12:12 AM”吗?您可以将其更改为 test.replace(test.substring(13,16),"12:") 我认为(类似于 haim 的方法)。
        • @Dominic:好点,但实际上在这种情况下它会正确替换它,因为 JavaScript replace() 方法只替换第一次出现。但如果日期是“2000 年 3 月 16 日”,它就不会起作用。
        • @Daniel - 有趣 - 似乎是 String::replace 的一个奇怪实现。谢谢指正!
        猜你喜欢
        • 1970-01-01
        • 2017-09-17
        • 1970-01-01
        • 2015-10-18
        • 2021-01-27
        • 2013-05-12
        • 2012-07-20
        • 2017-04-10
        • 2018-11-09
        相关资源
        最近更新 更多