Zaproponuj rozwiązanie usuwania lub obcinania wiodących zer z liczby (dowolnego ciągu) przez javascript, jquery.
'00000.5'
)?
Zaproponuj rozwiązanie usuwania lub obcinania wiodących zer z liczby (dowolnego ciągu) przez javascript, jquery.
'00000.5'
)?
Odpowiedzi:
Możesz użyć wyrażenia regularnego dopasowującego zera na początku ciągu:
s = s.replace(/^0+/, '');
Użyłbym funkcji Number ():
var str = "00001";
str = Number(str).toString();
>> "1"
Albo pomnożyłbym swój ciąg przez 1
var str = "00000000002346301625363";
str = (str * 1).toString();
>> "2346301625363"
Może trochę późno, ale chcę dodać moje 2 centy.
jeśli twój ciąg ZAWSZE reprezentuje liczbę, z możliwymi zerami wiodącymi, możesz po prostu rzutować ciąg na liczbę za pomocą operatora „+”.
na przykład
x= "00005";
alert(typeof x); //"string"
alert(x);// "00005"
x = +x ; //or x= +"00005"; //do NOT confuse with x+=x, which will only concatenate the value
alert(typeof x); //number , voila!
alert(x); // 5 (as number)
jeśli twój ciąg nie reprezentuje liczby i musisz usunąć tylko 0, użyj innych rozwiązań, ale jeśli potrzebujesz ich tylko jako liczby, jest to najkrótsza droga.
i do Twojej wiadomości, możesz zrobić odwrotnie, wymusić na liczbach działanie jako łańcuchy, jeśli połączysz z nimi pusty ciąg, na przykład:
x = 5;
alert(typeof x); //number
x = x+"";
alert(typeof x); //string
mam nadzieję, że to komuś pomoże
Ponieważ powiedziałeś „dowolny ciąg”, zakładam, że jest to również ciąg, którym chcesz się posługiwać.
"00012 34 0000432 0035"
Tak więc regex to najlepszy sposób:
var trimmed = s.replace(/\b0+/g, "");
Zapobiegnie to utracie wartości „000000”.
var trimmed = s.replace(/\b(0(?!\b))+/g, "")
Możesz zobaczyć działający przykład tutaj
Mam to rozwiązanie do obcinania wiodących zer (liczby lub dowolnego ciągu) w javascript:
<script language="JavaScript" type="text/javascript">
<!--
function trimNumber(s) {
while (s.substr(0,1) == '0' && s.length>1) { s = s.substr(1,9999); }
return s;
}
var s1 = '00123';
var s2 = '000assa';
var s3 = 'assa34300';
var s4 = 'ssa';
var s5 = '121212000';
alert(s1 + '=' + trimNumber(s1));
alert(s2 + '=' + trimNumber(s2));
alert(s3 + '=' + trimNumber(s3));
alert(s4 + '=' + trimNumber(s4));
alert(s5 + '=' + trimNumber(s5));
// end hiding contents -->
</script>
false
. Użycie 9999
jako drugiego parametru do substr
nie jest potrzebne. Po prostu użyj while (s.substr(0,1) == '0') s = s.substr(1);
. Poza tym ten fragment kodu wygląda na naprawdę stary, language
atrybut script
tagu jest przestarzały, a używanie komentarzy w script
tagach jest potrzebne tylko w przeglądarkach, które w ogóle nie rozumieją script
tagu, np. Internet Explorer 1.0.
parseInt(value) or parseFloat(value)
To będzie dobrze działać.
Spróbuj tego,
function ltrim(str, chars) {
chars = chars || "\\s";
return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
}
var str =ltrim("01545878","0");
Więcej tutaj
Po prostu spróbuj pomnożyć przez jeden w następujący sposób:
„00123” * 1; // Pobierz jako numer
"00123" * 1 + ""; // Pobierz jako ciąg
Należy użyć parametru „radix” funkcji „parseInt”: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/parseInt?redirectlocale=en-US&redirectslug=JavaScript%2FReference % 2FGlobal_Objects% 2FparseInt
parseInt ('015', 10) => 15
jeśli go nie używasz, jakiś silnik javascript może używać go jako ósemkowego parseInt ('015') => 0
W inny sposób bez wyrażenia regularnego:
function trimLeadingZerosSubstr(str) {
var xLastChr = str.length - 1, xChrIdx = 0;
while (str[xChrIdx] === "0" && xChrIdx < xLastChr) {
xChrIdx++;
}
return xChrIdx > 0 ? str.substr(xChrIdx) : str;
}
Z krótkim ciągiem będzie szybszy niż regex ( jsperf )