2011-10-05 41 views
16

Làm thế nào tôi có thể đếm số nguyên trong một chuỗi bằng cách sử dụng jQuery hoặc javascript?Đếm số nguyên trong một chuỗi

Ví dụ g66ghy7 = 3

+1

Đây có phải là một bài tập về nhà? Nếu có, vui lòng thêm thẻ [bài tập về nhà] (http://stackoverflow.com/questions/tagged/homework). –

+5

Không phải là 66 một số nguyên? Tôi nghĩ rằng bạn có nghĩa là "chữ số" :) –

Trả lời

28
alert("g66ghy7".replace(/[^0-9]/g,"").length); 

Look here.

+0

Heh, chỉ cần không mess nó với điều này: '/^[0-9]/g' :) http://jsfiddle.net/a52bokjf/1/ –

1

Một giải pháp thay thế dài hơn một chút là chuyển đổi từng char thành một số; nếu nó không thất bại, hãy tăng bộ đếm.

var sTest = "g66ghy7"; 

var iCount = 0; 
for (iIndex in sTest) { 
    if (!isNaN(parseInt(sTest[iIndex]))) { 
     iCount++; 
    } 
} 
alert(iCount); 

Xem thêm jsfiddle.

5

Giải pháp đơn giản nhất là sử dụng cụm từ thông dụng để thay thế tất cả nhưng giá trị số và kéo dài sau đó. Hãy xem xét những điều sau đây:

var s = 'g66ghy7'; 
alert(s.replace(/\D/g, '').length); //3 
+0

Không nên s .replace ('/ \ d/g') đủ? –

+0

'\ D' có nghĩa là không phải là số, do đó' s.replace (/ \ D/g, '') ' –

+0

@RicardoTomasi - cảm ơn, được cập nhật vì nó được sử dụng tốt hơn. – f0x

5

Tôi tìm thấy điều này mình trông xinh đẹp/đơn giản:

var count = ('1a2b3c'.match(/\d/g) || []).length 

Một RegExp có thể sẽ thực hiện tốt hơn (it appears):

var r = new RegExp('\\d', 'g') 
    , count = 0 

while(r.exec('1a2b3c')) count++; 
Các vấn đề liên quan