簡體   English   中英

從負值中刪除前導零

[英]Remove leading zeros from a negative value

我正在使用ltrim()函數從已修剪的字符串中刪除前導零,但是不幸的是,負數條目也是有效的,因此我的解決方案對此無效。

例如 -

$size1 = "0010xp";
$size2 = "-0010px";
var_dump(ltrim($size1, 0));
var_dump(ltrim($size2, 0));

產生輸出-

string(4)“ 10px” //正確
string(7)“ -0010px” //錯誤

如何在保留-符號的同時從負值中刪除前導零?

ltrim確實包含多個字符:

$string = ltrim($string, '-0');

這將從字符串開頭刪除所有零和負號。

編輯:如果要保留減號,請嘗試如下操作:

$string = ($string[0] == '-') ? '-'.ltrim(substr($string, 1), '0') : ltrim($string, '0');

preg_replace也是一個選項,但是通常比簡單的字符串操作要慢得多。

您為什么不兩次運行ltrim?

$string = "-0010xp";
$string = ltrim($string, '-');
$string = ltrim($string, 0);
echo $string;

ltrim可以使用任何字符。 請參閱文檔。 http://php.net/manual/en/function.ltrim.php

我要保留“-”,然后查看史蒂夫B的答案:

$string = "-00010px";
$string = preg_replace('/^(-)?(0+)/', '$1' , $string);
echo $string;

您可以定義一個函數微調器以檢查負號,將其刪除,然后在刪除零后將其重新添加。

然后,您可以使用任何要從中去除零的字符串來調用它。

function trimmer($str) {
  $is_neg = false;
  if (substr($str, 0, 1) == '-') {
    $is_neg = true;
    $str = ltrim($str, '-');
  }
  $str = ltrim($str, 0);
  if ($is_neg) {
    $str = '-' . $str;
  }
  return $str;
}

echo trimmer("0010px");
echo trimmer("-0010px");

修剪零后,這將恢復“-”號,我認為其他解決方案不會。

我想到的一種快速解決方案是匹配一個正則表達式並使用preg_replace:

var_dump(preg_replace('/^(-)?(0+)/', '$1' , "-00010px"));
var_dump(preg_replace('/^(-)?(0+)/', '$1' , "00010px"));
$size1 = "0010xp";
$size2 = "-0010px";
var_dump(ltrim($size1, 0));
var_dump(ltrim(abs($size2), 0));

另一種選擇是floatval()

$val1 = '0010px';
$val2 = '-0010px';

echo floatval($val1) . 'px';
echo '<br>';
echo floatval($val2) . 'px';

輸出:

10px
-10px

@Psaniko的答案可能更有效。 並且您需要添加“ px”,如果不僅是后綴,那將是一個問題。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM