Schlagen Sie eine Lösung zum Entfernen oder Abschneiden führender Nullen von Zahlen (beliebiger Zeichenfolgen) durch Javascript oder jquery vor.
'00000.5'
) verarbeiten?
Schlagen Sie eine Lösung zum Entfernen oder Abschneiden führender Nullen von Zahlen (beliebiger Zeichenfolgen) durch Javascript oder jquery vor.
'00000.5'
) verarbeiten?
Antworten:
Sie können einen regulären Ausdruck verwenden, der am Anfang der Zeichenfolge mit Nullen übereinstimmt:
s = s.replace(/^0+/, '');
Ich würde die Number () Funktion verwenden:
var str = "00001";
str = Number(str).toString();
>> "1"
Oder ich würde meine Zeichenfolge mit 1 multiplizieren
var str = "00000000002346301625363";
str = (str * 1).toString();
>> "2346301625363"
Vielleicht etwas spät, aber ich möchte meine 2 Cent hinzufügen.
Wenn Ihre Zeichenfolge IMMER eine Zahl mit möglichen führenden Nullen darstellt, können Sie die Zeichenfolge einfach mit dem Operator '+' in eine Zahl umwandeln.
z.B
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)
Wenn Ihre Zeichenfolge keine Zahl darstellt und Sie nur die Nullen entfernen müssen, verwenden Sie die anderen Lösungen. Wenn Sie sie jedoch nur als Zahl benötigen, ist dies der kürzeste Weg.
und zu Ihrer Information können Sie das Gegenteil tun, indem Sie Zahlen zwingen, als Zeichenfolgen zu fungieren, wenn Sie ihnen eine leere Zeichenfolge verketten, wie z.
x = 5;
alert(typeof x); //number
x = x+"";
alert(typeof x); //string
hoffe es hilft jemandem
Da Sie "jede Zeichenfolge" gesagt haben, gehe ich davon aus, dass dies auch eine Zeichenfolge ist, mit der Sie umgehen möchten.
"00012 34 0000432 0035"
Regex ist also der richtige Weg:
var trimmed = s.replace(/\b0+/g, "");
Dies verhindert den Verlust eines "000000" -Werts.
var trimmed = s.replace(/\b(0(?!\b))+/g, "")
Hier sehen Sie ein Arbeitsbeispiel
Ich habe diese Lösung zum Abschneiden führender Nullen (Zahlen oder beliebiger Zeichenfolgen) in Javascript erhalten:
<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
. Die Verwendung 9999
als zweiter Parameter für substr
ist nicht erforderlich. Einfach benutzen while (s.substr(0,1) == '0') s = s.substr(1);
. Außerdem sieht dieses Code-Snippet sehr alt aus, das language
Attribut des script
Tags ist seit langem veraltet und die Verwendung von Kommentaren in script
Tags ist nur für Browser erforderlich, die das script
Tag überhaupt nicht verstehen , z. B. Internet Explorer 1.0.
parseInt(value) or parseFloat(value)
Das wird gut funktionieren.
Versuche dies,
function ltrim(str, chars) {
chars = chars || "\\s";
return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
}
var str =ltrim("01545878","0");
Mehr hier
Versuchen Sie einfach, wie folgt mit eins zu multiplizieren:
00123 * 1; // Als Nummer erhalten
"00123" * 1 + ""; // Als Zeichenfolge abrufen
Sie sollten den Parameter "radix" der Funktion "parseInt" verwenden: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/parseInt?redirectlocale=de-US&redirectslug=JavaScript%2FReference % 2FGlobal_Objects% 2FparseInt
parseInt ('015', 10) => 15
Wenn Sie es nicht verwenden, wird es möglicherweise von einer Javascript-Engine als oktales parseInt ('015') => 0 verwendet
Ein anderer Weg ohne Regex:
function trimLeadingZerosSubstr(str) {
var xLastChr = str.length - 1, xChrIdx = 0;
while (str[xChrIdx] === "0" && xChrIdx < xLastChr) {
xChrIdx++;
}
return xChrIdx > 0 ? str.substr(xChrIdx) : str;
}
Mit einer kurzen Zeichenfolge ist es schneller als Regex ( jsperf )