一小段代码
Submitted by gouki on 2009, November 25, 11:21 AM. PHP
群内突然有人【桔子】提问:
然后自问自答,说这些是他同事写的:
PHP代码
-
- $str = '001020';
- echo strlen(str_replace((int)$str, '', $str));
-
-
- $text = '0001';
- $zero = strlen($text) - strlen(ltrim($text, '0'));
- return $zero;
然后说了他自己写的:
PHP代码
- $string = '000 012012';
- $string = str_replace(' ', '', $string);
- $length = strlen($string);
-
- $x = 0;
- for ($i = 0; $i < $length; $i++)
- {
- $currentStr = $string{$i};
- if ($currentStr != 0)
- {
- break;
- }
- $x++;
- }
- echo $x;
最后我也写了两个,一个正则,一个是利用现有函数:
PHP代码
- $str = '00 0 000100002000';
- preg_match( "/^0{0,}/", str_replace( " ", "", $str ), $out );
- echo( $out[0] );
-
- $str = '00 0 000100002000';
- $tt = str_word_count(str_replace( " ", "", $str ),1,'0');
- echo( $tt[0] );
之所以要用str_replace,也是因为桔子说的,以防当中有空格。但事实上,如果出这种题目,应该是不会有空格的吧?
哈哈完事。。。
本站采用
创作共享版权协议, 要求署名、非商业和保持一致. 本站欢迎任何非商业应用的转载, 但须注明出自"
易栈网-膘叔", 保留原始链接, 此外还必须标注原文标题和链接.
« 上一篇 | 下一篇 »
4条记录访客评论
最简单的还是 算法2
如果有空格,把空格加到ltrim的第二个参数不就行了
# $text = '00 01';
# $zero = strlen($text) - strlen(ltrim($text, "0 \t\n\r\0\x0B"));
# return $zero;
Post by 阿债 on 2010, April 16, 9:26 AM #1
果然算是抛砖引玉了。
(strrpos($str, '0') + 1); 这个,主要是担心 0可能在任何位置都有,但只取前导0.。。
echo strlen($str) - strlen( sprintf ("%d", $str) ); ,如果转为d的话,数字太长会出错。而且可能前导0会消失 。
Post by gouki on 2009, November 25, 12:26 PM #2
这个也不错吧
[code]
<?php
$str = "00 00 0000 1240";
$str = str_replace(' ' , '', $str);
echo strlen($str) - strlen( sprintf ("%d", $str) );
?>
[/code]
Post by deeka on 2009, November 25, 12:09 PM #3
<?php
$str = "00 00 0000 124";
$str = str_replace(" ", '', $str);
echo $total = (strrpos($str, '0') + 1);
?>
Post by deeka on 2009, November 25, 12:02 PM #4
发表评论