【问题标题】:Adding a character in the middle of a string在字符串中间添加一个字符
【发布时间】:2013-10-27 11:00:07
【问题描述】:

可能有一个简单的解决方案可以解决这个问题。我将时间存储为 4 个字符的长字符串,即 1300。

我正在尝试将该字符串显示为 13:00。我觉得必须有一个比我目前正在做的更优雅的解决方案。

我目前有:

$startTime = get_field($dayStart, $post->ID);
$endTime = get_field($dayEnd, $post->ID);

        for ($x=0; $x = 4; $x++){

            if(x == 2){
                $ST .= ':';
                $ET .= ':';
            } else {
                $ST .= $startTime[x];
                $ET .= $endTime[x];
            }

        }

$startTime = $ST;
$endTime = $ET;

字符串总是 4 个字符长。

【问题讨论】:

    标签: php string wordpress advanced-custom-fields


    【解决方案1】:
    $time = "1300";    
    $time = substr($time,0,2).':'.substr($time,2,2);
    

    编辑:

    这里是这个问题的一般解决方案:

    function insertAtPosition($string, $insert, $position) {
        return implode($insert, str_split($string, $position));
    }
    

    【讨论】:

    • 如果 $time = "500"; 则秒返回 "50:0";
    • 必须从末尾考虑
    • @Ethan 良好的语气是一种通用的解决方案。但你应付了任务:)
    • 您在编辑中编写的自定义函数有一个本机 php 函数,请参阅下面的答案。
    • 当位置为零时,您的一般解决方案会发生什么情况?或者当字符串的长度比位置大几倍时? ... :)
    【解决方案2】:

    我喜欢这个解决方案,因为它只是一个功能

    substr_replace('1300', ':', 2, 0);
    

    http://php.net/substr_replace

    【讨论】:

      【解决方案3】:
      implode(":",str_split($time,2));
      

      【讨论】:

        【解决方案4】:
        substr_replace( $yourVar, ':', -2, 0 );
        

        将在 9:45 生成 945,在 12:45 生成 1245。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2016-10-08
          • 1970-01-01
          • 2011-04-22
          • 2017-04-15
          • 2023-03-04
          • 2022-11-12
          • 2020-04-13
          • 1970-01-01
          相关资源
          最近更新 更多