2010-10-17 25 views
12

chuỗi trông như thế nàyJavascript/Jquery - Nhận số từ chuỗi

"blabla blabla-5 amount-10 blabla direction-left" 

Làm thế nào tôi có thể nhận được số lượng chỉ sau "amount-", và các văn bản chỉ sau "direction-"?

+2

Fol hạ thấp quy tắc nào? Trích xuất tất cả các số? Kết quả mong muốn, một mảng là gì? –

+0

không, chỉ số/chuỗi sau các thông số đó. đầu ra phải là một chuỗi – Alex

Trả lời

17

này sử dụng regular expressionsexec method:

var s = "blabla blabla-5 amount-10 blabla direction-left"; 
var amount = parseInt(/amount-(\d+)/.exec(s)[1], 10); 
var direction = /direction-([^\s]+)/.exec(s)[1]; 

Mã này sẽ gây ra một lỗi nếu số tiền hoặc hướng là mất tích; nếu điều này là có thể, hãy kiểm tra xem kết quả của exec là không null trước khi lập chỉ mục vào mảng sẽ được trả về.

+0

cảm ơn bạn đó là nó :) – Alex

6

Bạn có thể sử dụng regexp như được giải thích by w3schools. Gợi ý:

str = "blabla blabla-5 amount-10 blabla direction-left" 
alert(str.match(/amount-([0-9]+)/)); 

Otherwize bạn chỉ có thể muốn tất cả các số để sử dụng mẫu [0-9] +. str.match sẽ trả về một mảng.

+2

Uh-oh http://w3fools.com/ –

38

này sẽ nhận được tất cả các số cách nhau bằng hôn mê:

 
var str = "10 is smaller than 11 but greater then 9"; 
var pattern = /[0-9]+/g; 
var matches = str.match(pattern); 

Sau khi thực hiện, chuỗi matches sẽ có giá trị "10,11,9"

Nếu bạn chỉ là tìm kiếm xuất hiện đầu tiên thew, mô hình sẽ /[0-9]+/ - sẽ trả lại 10

(Không cần JQuery)

+0

Đây là cách hiệu quả nhất. Cảm ơn! –