代码之家  ›  专栏  ›  技术社区  ›  Roman

将带米和厘米的字符串转换为厘米

  •  -4
  • Roman  · 技术社区  · 6 年前

    我有一根绳子 1 M 24 Cm 我只想把它转换成厘米。

    所以不是 1米24厘米 我想拥有 124 cm

    解决这个问题的最好方法是什么?

    2 回复  |  直到 6 年前
        1
  •  2
  •   CertainPerformance    6 年前

    捕获表示仪表的第一个数字,并替换到 Cm 与被抓获的小组,展望未来 厘米 数字和字符:

    (\d+) M (?=\d+ Cm) 替换为 $1

    $orig = '1 M 24 Cm';
    $replaced = preg_replace(
      '/(\d+) M (?=\d+ Cm)/',
      '$1',
      $orig
    );
    echo $replaced;
    

    或者你可以在后面寻找一个数字,然后替换 M 空字符串

    $replaced = preg_replace(
      '/(?<=\d) M (?=\d+ Cm)/',
      '',
      $orig
    );
    
        2
  •  1
  •   The fourth bird    6 年前

    另一种方法是断言字符串的开头 ^ ,匹配一个或多个数字 \d+ 并重置报告匹配的起点 \K 是的。

    然后匹配 M 接下来是积极的展望 (?= 它断言后面跟的是一个或多个数字 Cm 并断言字符串的结尾将匹配项替换为空字符串并使用 strtolower 是的。

    $re = '/^\d+\K M (?=\d+ Cm$)/';
    $str = '1 M 24 Cm';
    $subst = '';
    $result = strtolower(preg_replace($re, $subst, $str, 1));
    echo $result; // 124 cm