2012-01-27 28 views

Trả lời

23

Bạn có thể chia một chuỗi dựa trên bất kỳ ký tự (giống như một không gian), sau đó vượt qua các chỉ số đầu tiên để parseInt

var str = "223 lorem"; 
var num = parseInt(str.split(' ')[0], 10); 

DEMO

Lưu ý rằng parseInt mất một tham số thứ hai, đó là radix . Nếu bạn rời khỏi điều đó và cố gắng phân tích cú pháp một số có số 0 đứng đầu, như 09, nó sẽ giả sử bạn ở cơ sở 8 và sẽ trả về 0, vì 09 không phải là giá trị cơ sở hợp lệ 8.


Hoặc, như John chỉ ra, bằng cách sử dụng + hành unary là một cách tiện lợi để chuyển đổi một chuỗi với một số:

var str = "223 lorem"; 
var num = +str.split(' ')[0]; 

DEMO

+0

+1, điều duy nhất tôi khuyên bạn nên chuyển '10' làm tham số thứ hai cho' parseInt', chỉ cần thực hành tốt IMO. – Chad

+0

@Chad - Tôi nên biết rõ hơn - Tôi đã bị đốt cháy trước đó –

+1

@Bcee: Chỉ cần FYI, phương pháp được trình bày ở trên là Javascript thuần túy vì câu hỏi của bạn không liên quan gì đến jQuery. Tôi hiểu bạn đang sử dụng jQuery trong dự án của bạn/bài tập về nhà bất cứ điều gì nó là nhưng tôi đề nghị bạn tìm hiểu Javascript. jQuery không chạm vào các chủ đề được liệt kê trong câu hỏi của bạn. –

4

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

var str = "223 Lorem Ipsum Dolor"; 
str = $.trim(str).split(" "); 
var num = parseInt(str[0], 10); 
+0

+1, nhưng giống như câu trả lời ban đầu của tôi, bạn cần một tham số radix trong parseInt của bạn :) –

2

Tôi nghĩ rằng nó tốt hơn để sử dụng một cái gì đó như:

var str = "223 Lorem Ipsum Dolor"; 
var matches = str.match(/(\d+)/); 
result = parseInt(matches[0]); 

Có lẽ bạn sẽ muốn WSE một số nots trước \ d +

+1

và một tham số radix :) –

0

Hãy thử này ...

function getFirstNumber(str) { 
    var matched = str.match(/^\d+/); 
    if(matched) { 
    return +matched[0]; // Get matched number (as string) and type cast to Number. 
    } 

    console.error("first word is not a number: '" + str + "'."); 
    return -1; 
}; 

var str = "223 lorem"; 

getFirstNumber(str); 
Các vấn đề liên quan