문자열에서 모든 선행 0을 제거하는 방법
끈이 있으면
00020300504
00000234892839
000239074
내가 이것을 갖도록 선행 0을 어떻게 제거 할 수 있습니까?
20300504
234892839
239074
위의 숫자는 무작위로 생성되었습니다.
$str = ltrim($str, '0');
(string)((int)"00000234892839")
사람들이 왜 그렇게 단순한 것을 달성하기 위해 그렇게 복잡한 방법을 사용하는지 모르십시오! 그리고 정규식? 와!
가장 쉽고 간단한 방법입니다 ( https://nabtron.com/kiss-code/ 참조 ).
$a = '000000000000001';
$a += 0;
echo $a; // will output 1
실제 제로를 없애지 않는 것을 제외하고 다른 제안과 비슷합니다.
if (ltrim($str, '0') != '') {
$str = ltrim($str, '0');
} else {
$str = '0';
}
변수에 "+"를 추가하면
예 :
$numString = "0000001123000";
echo +$numString;
정규식은 이미 제안되었지만 올바르게 올바르지 않습니다.
<?php
$number = '00000004523423400023402340240';
$withoutLeadingZeroes = preg_replace('/^0+/', '', $number)
echo $withoutLeadingZeroes;
?>
출력은 다음과 같습니다.
4523423400023402340240
정규식에 대한 배경 : ^
문자열의 시작 신호와 +
부호는 앞 부호의 부호를 나타내거나 전혀 나타내지 않습니다. 따라서 정규 표현식 ^0+
은 문자열 시작 부분의 모든 0과 일치합니다.
나는 preg_replace가 답이라고 생각하지 않습니다. 오래된 스레드이지만 오늘 이것을 찾는 것입니다. ltrim 및 (int) 캐스팅이 승자입니다.
<?php
$numString = "0000001123000";
$actualInt = "1123000";
$fixed_str1 = preg_replace('/000+/','',$numString);
$fixed_str2 = ltrim($numString, '0');
$fixed_str3 = (int)$numString;
echo $numString . " Original";
echo "<br>";
echo $fixed_str1 . " Fix1";
echo "<br>";
echo $fixed_str2 . " Fix2";
echo "<br>";
echo $fixed_str3 . " Fix3";
echo "<br>";
echo $actualInt . " Actual integer in string";
//output
0000001123000 Origina
1123 Fix1
1123000 Fix2
1123000 Fix3
1123000 Actual integer in tring
이 방법으로 고정되었습니다.
매우 간단합니다. 문자열의 0 시작을 제거하는 문자열 만 전달하십시오.
function removeZeroString($str='')
{
while(trim(substr($str,0,1)) === '0')
{
$str = ltrim($str,'0');
}
return $str;
}
Ajay Kumar는 가장 간단한 반향 + $ numString을 제공합니다 . 나는 이것을 사용한다 :
echo round($val = "0005");
echo $val = 0005;
//both output 5
echo round($val = 00000648370000075845);
echo round($val = "00000648370000075845");
//output 648370000075845, no need to care about the other zeroes in the number
//like with regex or comparative functions. Works w/wo single/double quotes
실제로 모든 수학 함수는 "문자열"에서 숫자를 가져 와서 처리합니다. 정규식이나 비교 함수보다 훨씬 간단합니다. 나는 php.net에서 그것을 어디에 있는지 기억하지 못한다.
세 개 이상의 0을 제거하고 예제가 하나의 문자열이라고 가정합니다.
$test_str ="0002030050400000234892839000239074";
$fixed_str = preg_replace('/000+/','',$test_str);
내 가정이 꺼져 있으면 정규식 패턴을 필요한 것에 맞출 수 있습니다.
도움이 되셨습니까?
참고 URL : https://stackoverflow.com/questions/5098688/how-to-remove-all-leading-zeroes-in-a-string
'Programing' 카테고리의 다른 글
SQL Server 보안 주체 "dbo"가 없습니다. (0) | 2020.06.12 |
---|---|
Java에서 두 필드를 기준으로 정렬하는 방법은 무엇입니까? (0) | 2020.06.12 |
__MACOSX 폴더없이 Mac zip 압축? (0) | 2020.06.12 |
Objective-C에서 "인식 할 수없는 선택기가 인스턴스로 전송되었습니다"오류 (0) | 2020.06.12 |
"다른 사용자가이 기기에 호환되지 않는 버전을 이미 설치했기 때문에이 앱을 설치할 수 없습니다" (0) | 2020.06.12 |