2009-03-16 75 views
112

Tôi cần lấy phần tử cuối cùng của mảng được phân tách với nhiều dấu phân cách. Các dấu tách là dấu phẩy và dấu cách. Nếu không có dấu tách, nó sẽ trả về chuỗi gốc.Lấy phần tử cuối cùng của mảng chuỗi phân tách

Nếu chuỗi là "bạn đang làm gì, hôm nay?" nó sẽ trở lại "hôm nay?"

Nếu đầu vào là "hello", đầu ra phải là "hello".

Tôi làm cách nào để thực hiện điều này trong JavaScript?

Trả lời

74
var str = "hello,how,are,you,today?"; 
var pieces = str.split(/[\s,]+/); 

Tại thời điểm này, pieces là một mảng và pieces.length chứa kích thước của mảng như vậy để có được yếu tố cuối cùng của mảng, bạn kiểm tra pieces[pieces.length-1]. Nếu không có dấu phẩy hoặc dấu cách, nó sẽ đơn giản xuất chuỗi ký tự.

alert(pieces[pieces.length-1]); // alerts "today?" 
529

Có một lớp lót cho mọi thứ. :)

var output = input.split(/[, ]+/).pop(); 
+0

Aaah, pop. Thực hiện tốt. :) –

+0

+1 thay thế rõ ràng – diEcho

+14

câu trả lời * chính xác * cho câu hỏi;) – Stephen

3

Và nếu bạn không muốn xây dựng một mảng ...

var str = "how,are you doing, today?"; 
var res = str.replace(/(.*)([, ])([^, ]*$)/,"$3"); 

Các sự cố bằng tiếng Anh là:

/(anything)(any separator once)(anything that isn't a separator 0 or more times)/ 

Các thay thế chỉ nói thay thế toàn bộ chuỗi với nội dung sau dấu phân cách cuối cùng.

Vì vậy, bạn có thể thấy cách ứng dụng này có thể được áp dụng chung. Lưu ý chuỗi gốc không được sửa đổi.

25

Giving sau:

var item = "one,two"; 
var lastItem = item.split(",").pop(-1); 

Liệu nó hoạt động?

+8

Tôi không nghĩ rằng pop() có đối số. –

+0

@GraceShao: vâng. https: //developer.mozilla.org/en-US/docs/Web/JavaScript/Tham chiếu/Global_Objects/Array/pop – aymericbeaumet

+3

Nhưng, nói chung '.split (','). pop()' hoạt động cho phần tử cuối cùng trên chuỗi phân tách bằng dấu phẩy. Chỉ cần nói rằng tôi đã bị lừa bởi câu trả lời tuyệt vời của Guffa, tôi chỉ bỏ qua nó bởi vì không cần một regex và nghĩ rằng các trick đã có! : P – cregox

0
var title = 'fdfdsg dsgdfh dgdh dsgdh tyu hjuk yjuk uyk hjg fhjg hjj tytutdfsf sdgsdg dsfsdgvf dfgfdhdn dfgilkj,n, jhk jsu wheiu sjldsf dfdsf hfdkdjf dfhdfkd hsfd ,dsfk dfjdf ,yier djsgyi kds'; 
var shortText = $.trim(title).substring(1000, 150).split(" ").slice(0, -1).join(" ") + "...More >>"; 
0

Bạn có thể truy cập vào các chỉ số mảng trực tiếp:

var csv = 'zero,one,two,three'; csv.split(',')[0]; //result: zero csv.split(',')[3]; //result: three

+2

Xin chào tnong, chào mừng bạn đến với SO! Tôi nghĩ câu trả lời này không tính đến dấu phân tách khoảng trống theo yêu cầu trong câu hỏi. –

+0

Câu trả lời này không hỗ trợ độ dài mảng chuỗi tùy ý –

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