2009-02-27 64 views
33

Tôi có một hộp văn bản trong Javascript. Khi tôi nhập '0000.00' vào hộp văn bản, tôi muốn biết cách chuyển đổi để chỉ có một số 0 đứng đầu, chẳng hạn như '0.00'.Cắt bớt số 0 đầu của một chuỗi trong Javascript

+0

Cần làm rõ những gì một "chuỗi" là. Nếu "chuỗi" của bạn là số thập phân thì câu trả lời sẽ khác với "chuỗi" của bạn là chuỗi văn bản. "00000.000" -> "0,000" sẽ là một chuyển đổi thập phân. "000TXT10001" -> "0TXT10001" sẽ yêu cầu chức năng cắt. Ví dụ bạn mong đợi gì khi đầu vào là "0011.1100" -> "011.1100" hoặc "11.11"? – ChronoFish

Trả lời

1

Hãy thử điều này:

<input type="text" onblur="this.value=this.value.replace(/^0+(?=\d\.)/, '')"> 
13
var value= document.getElementById("theTextBoxInQuestion").value; 
var number= parseFloat(value).toFixed(2); 
+4

Điều này có gây ra bất kỳ vấn đề gì nếu số lượng số không ở bên trái của số thập phân là rất lớn không? – Eric

+0

Eric có điểm, nó sẽ chỉ hoạt động nếu bạn có một số 0 đứng đầu. Hơn thế nữa và thất bại. –

8

Có vẻ như bạn chỉ muốn loại bỏ số không hàng đầu, trừ khi có chỉ có một trái ("0" cho một số nguyên hoặc "0.xxx" cho một float, nơi x có thể là bất cứ điều gì).

này nên được tốt cho một vết cắt đầu tiên:

while (s.charAt(0) == '0') {   # Assume we remove all leading zeros 
    if (s.length == 1) { break };  # But not final one. 
    if (s.charAt(1) == '.') { break }; # Nor one followed by '.' 
    s = s.substr(1, s.length-1) 
} 
+0

Đây là một giải pháp tốt. Dựa vào các hàm dựng sẵn không phải lúc nào cũng là lựa chọn tốt nhất. Tôi sẽ biến điều này thành một hàm trợ giúp lấy một đối số chuỗi và trả về chuỗi đã định dạng. –

+0

Hoạt động rất tốt đối với tôi. Tôi chỉ khuyên bạn nên thêm một đoạn mã để hỗ trợ các số âm (với "-" trong ký tự đầu tiên). – Gaston

43

giải pháp đơn giản hơn là như dưới đây. Kiểm tra điều này!

var resultString = document.getElementById("theTextBoxInQuestion") 
          .value 
          .replace(/^[0]+/g,""); 
+9

Hoàn hảo? Er ... nó không hoạt động: '0000.00'' trở thành' '.00'' – MikeM

+0

@MikeM, sau đó bạn có thể sử dụng 'thay thế (/^[0] +/g," 0 ")' – Andrew

5

Bạn có thể sử dụng mã này:

<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> 
22
str.replace(/^0+(?!\.|$)/, '') 

    '0000.00' --> '0.00' 
    '0.00' --> '0.00' 
    '00123.0' --> '123.0' 
     '0' --> '0' 
4

Ok một giải pháp đơn giản. Vấn đề duy nhất là khi chuỗi là "0000.00" kết quả trong đồng bằng 0. Nhưng bên cạnh đó tôi nghĩ là một giải pháp mát mẻ.

var i = "0000.12"; 
var integer = i*1; //here's is the trick... 
console.log(i); //0000.12 
console.log(integer);//0.12 

Đối với một số trường hợp tôi nghĩ rằng điều này có thể làm việc ...

Các vấn đề liên quan