Helpex - Trao đổi & giúp đỡ Đăng nhập
137

Tôi cần lấy phần tử cuối cùng của một mảng phân tách có nhiều dấu phân cách. Các phân cách là dấu phẩy và không gian. Nếu không có dấu phân cách thì nên trả về chuỗi gốc.

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

Nếu đầu vào là "xin chào" thì đầu ra phải là "xin chào".

Làm thế nào tôi có thể làm điều này trong JavaScript?

137 hữu ích 0 bình luận 202k xem chia sẻ
95
var str = "hello,how,are,you,today?";
var pieces = str.split(/[\s,]+/);

Tại thời điểm này, pieceslà một mảng và pieces.lengthchứa kích thước của mảng để có được phần 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ẽ chỉ xuất ra chuỗi như đã cho.

alert(pieces[pieces.length-1]); // alerts "today?"
95 hữu ích 2 bình luận chia sẻ
653

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

var output = input.split(/[, ]+/).pop();
653 hữu ích 5 bình luận chia sẻ
42
var item = "one,two";
var lastItem = item.split(",").pop(-1);

Điều này không hoạt động?

42 hữu ích 3 bình luận chia sẻ
7

Bạn cũng có thể xem xét để đảo ngược mảng của bạn và lấy phần tử đầu tiên. Bằng cách đó, bạn không cần phải biết về độ dài, nhưng nó không mang lại lợi ích thực sự và nhược điểm là thao tác ngược có thể mất nhiều thời gian hơn với các mảng lớn:

array1.split(",").reverse()[0]

Mặc dù điều này dễ, nhưng cũng sửa đổi mảng ban đầu trong câu hỏi. Điều đó có thể hoặc không thể là một vấn đề.

Tham khảo: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/reverse

Có lẽ bạn có thể muốn sử dụng điều này mặc dù:

array1.split(",").pop()
7 hữu ích 0 bình luận chia sẻ
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");

Sự cố trong tiếng Anh là:

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

Việc thay thế chỉ nói thay thế toàn bộ chuỗi bằng công cụ sau dấu phân cách cuối cùng.

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

3 hữu ích 0 bình luận chia sẻ
2
array.split(' ').slice(-1)[0]

Một trong những tốt nhất bao giờ hết và yêu thích của tôi.

2 hữu ích 1 bình luận chia sẻ
1

Bạn có thể truy cập chỉ mục mảng trực tiếp:

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

1 hữu ích 2 bình luận chia sẻ
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 hữu ích 0 bình luận chia sẻ
loading
Không tìm thấy câu trả lời bạn tìm kiếm? Duyệt qua các câu hỏi được gắn thẻ javascript split , hoặc hỏi câu hỏi của bạn.

Có thể bạn quan tâm

loading