【问题标题】:Converting numbers into timestamps (inserting colons at specific places)将数字转换为时间戳(在特定位置插入冒号)
【发布时间】:2021-02-03 16:48:44
【问题描述】:

我为此使用 AutoHotkey,因为代码对我来说是最容易理解的。所以我有一个带有数字和文字的文档,例如这样

120344文字文字文字

234000文字文字

所需的输出是

12:03:44文字文字文字

23:40:00文字文字

我确定可以使用 StrReplace 插入冒号,但我不确定如何指定冒号的位置或要求 AHK“查找”6 位数字的特定字符串。以前,我会突出显示要应用 StrReplace 的文本,然后按热键,但我想知道是否有更有效的方法来执行此操作而无需我的交互。即使只是指向我需要研究的相关功能也会有所帮助!非常感谢,我对编程还是很陌生。

【问题讨论】:

    标签: autohotkey


    【解决方案1】:

    hfontanez 的回答非常有助于弄清楚对于这个问题,我必须使用循环和子字符串函数。我确信编写这段代码的方式要少得多,但这是对我有用的最终版本:

    Loop, read, C:\[location of input file]
    {
      { If A_LoopReadLine = ;
       Continue ; this part is to ignore the blank lines in the file
      }
      { 
        one := A_LoopReadLine
        x := SubStr(one, 1, 2)
        y := SubStr(one, 3, 2)
        z := SubStr(one, 5)
        two := x . ":" . y . ":" . z
        FileAppend, %two%`r`n, C:\[location of output file]
       }
    }
    return
    

    【讨论】:

      【解决方案2】:

      假设“时间戳”组件的长度始终为 6 个字符并且始终位于字符串的开头,则此解决方案应该可以正常工作。

          String test = "012345 test test test";
          test = test.substring(0, 2) + ":" + test.substring(2, 4) + ":" + test.substring(4, test.length());
      

      这会输出01:23:45 test test test

      为什么?因为您正在临时创建一个 String 对象,它有两个字符长,然后在取下一对之前插入冒号。最后,附加String 的其余部分并将其分配给您想要的任何String 变量。请记住,substring 方法不会修改您正在调用该方法的 String 对象。此方法返回一个“新”String 对象。因此,变量test 是未修改的,直到最后执行赋值操作。

      或者,您可以使用 StringBuilder 并像这样附加每个组件:

      StringBuilder sbuff = new StringBuilder();
      sbuff.append(test.substring(0,2));
      sbuff.append(":");
      sbuff.append(test.substring(2,4));
      sbuff.append(":");
      sbuff.append(test.substring(4,test.length()));
      test = sbuff.toString();
      

      您也可以使用“花式”循环来执行此操作,但我认为对于这么简单的事情,循环只是矫枉过正。哦,我差点忘了,这应该适用于你的两个测试字符串,因为在最后一个冒号插入之后,代码会不加选择地从索引位置 4 一直到字符串末尾。

      【讨论】:

        猜你喜欢
        • 2015-01-06
        • 2015-03-03
        • 2020-04-12
        • 2021-12-18
        • 1970-01-01
        • 2020-05-04
        • 1970-01-01
        • 1970-01-01
        • 2020-11-22
        相关资源
        最近更新 更多