如何解决PHP的形式与stringformat字符串和converte
将字符串形成为诸如excel(##,#等)之类的特定格式的最佳方法是什么?
我想将格式设置为00:00.00,如果有人输入1:10.10,我想在其前面添加一个零。 如果输入看起来像1.5.07,则必须将其转换为01:50.07,较难的输入:0.3必须将其转换为00:00.30。
我认为使用某些正则表达式是可行的,我可以编写预期的格式,但是如何用此格式重新输入呢?
select filmname
from boxoffice
group by filmname
having max(case when country = 'A' then earnings end) >
max(case when country = 'B' then earnings end)
order by filmname;
输入中的必须转换为点。输入可以是“ 13.40 ”之类的任何东西,并且必须转换为 00:13.40 。它必须替换错误的分隔符并在开头或结尾添加缺失的0( 0:13.4 )
解决方法
我不知道从您的问题详细信息中我是否有足够的测试电池,但以下技术将更正您提供的字符串的零填充。
该模式有效地解析了一个字符串,其中包含 2 组可选数字,然后是字符串末尾之前的必需数字。
该模式允许冒号、逗号或点的任意组合作为分隔字符。如果您需要更多分隔字符,请将它们添加到字符类中。
我添加了负前瞻 ((?!\d+$)
) 以确保只有两组数字的数字不会使用第一组作为小时(结果中的第一个数字)。
sprintf()
是在每组替换字符串中强制执行零填充格式的优雅方式。
代码:(Demo)
$tests = [
'1:10.10','1.5.07','0.3','00:13,40','15,17',];
var_export(
preg_replace_callback(
'~(?:(\d{1,2})[:.,](?!\d+$))?(?:(\d{1,])?(\d{1,2})$~',function($m) {
return sprintf('%02d:%02d.%02d',$m[1],$m[2],$m[3]);
},$tests
)
);
输出:
array (
0 => '01:10.10',1 => '01:05.07',2 => '00:00.03',3 => '00:13.40',4 => '00:15.17',)
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。