Đề xuất giải pháp để loại bỏ hoặc cắt bớt các số 0 ở đầu số (bất kỳ chuỗi nào) bằng javascript, jquery.
'00000.5'
)?
Đề xuất giải pháp để loại bỏ hoặc cắt bớt các số 0 ở đầu số (bất kỳ chuỗi nào) bằng javascript, jquery.
'00000.5'
)?
Câu trả lời:
Bạn có thể sử dụng một biểu thức chính quy khớp với các số 0 ở đầu chuỗi:
s = s.replace(/^0+/, '');
Tôi sẽ sử dụng hàm Number ():
var str = "00001";
str = Number(str).toString();
>> "1"
Hoặc tôi sẽ nhân chuỗi của mình với 1
var str = "00000000002346301625363";
str = (str * 1).toString();
>> "2346301625363"
Có lẽ hơi muộn, nhưng tôi muốn thêm 2 xu của mình.
nếu chuỗi của bạn LUÔN đại diện cho một số, có thể có các số 0 ở đầu, bạn có thể chỉ cần chuyển chuỗi thành một số bằng cách sử dụng toán tử '+'.
ví dụ
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)
nếu chuỗi của bạn không đại diện cho một số và bạn chỉ cần xóa số 0 bằng cách sử dụng các giải pháp khác, nhưng nếu bạn chỉ cần chúng là số, đây là cách ngắn nhất.
và FYI bạn có thể làm ngược lại, buộc các số hoạt động như một chuỗi nếu bạn nối một chuỗi rỗng với chúng, như:
x = 5;
alert(typeof x); //number
x = x+"";
alert(typeof x); //string
hy vọng nó sẽ giúp ai đó
Vì bạn đã nói "bất kỳ chuỗi nào", tôi giả sử đây cũng là một chuỗi mà bạn muốn xử lý.
"00012 34 0000432 0035"
Vì vậy, regex là cách để đi:
var trimmed = s.replace(/\b0+/g, "");
Và điều này sẽ ngăn việc mất giá trị "000000".
var trimmed = s.replace(/\b(0(?!\b))+/g, "")
Bạn có thể xem một ví dụ làm việc tại đây
Tôi có giải pháp này để cắt bớt các số 0 ở đầu (số hoặc bất kỳ chuỗi nào) trong 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
. Việc sử dụng 9999
làm tham số thứ hai substr
là không cần thiết. Chỉ cần sử dụng while (s.substr(0,1) == '0') s = s.substr(1);
. Bên cạnh đó, đoạn mã đó trông thực sự cũ, language
thuộc tính của script
thẻ đã không còn được sử dụng trong một thời gian dài và việc sử dụng chú thích bên trong script
thẻ chỉ cần thiết cho các trình duyệt không hiểu script
thẻ, ví dụ như Internet Explorer 1.0.
parseInt(value) or parseFloat(value)
Điều này sẽ hoạt động tốt.
Thử đi,
function ltrim(str, chars) {
chars = chars || "\\s";
return str.replace(new RegExp("^[" + chars + "]+", "g"), "");
}
var str =ltrim("01545878","0");
Thêm ở đây
Chỉ cần thử nhân với một như sau:
"00123" * 1; // Lấy dưới dạng số
"00123" * 1 + ""; // Lấy dưới dạng chuỗi
Bạn nên sử dụng tham số "cơ số" của hàm "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
nếu bạn không sử dụng nó, một số công cụ javascript có thể sử dụng nó như một parseInt bát phân ('015') => 0
Một cách khác mà không cần 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;
}
Với chuỗi ngắn, nó sẽ nhanh hơn regex ( jsperf )