Javascript Tách chuỗi trên các ký tự UpperCase


106

Làm cách nào để bạn tách một chuỗi thành một mảng trong Javascript bằng ký tự UpperCase?

Vì vậy, tôi muốn chia:

'ThisIsTheStringToSplit'

thành

('This', 'Is', 'The', 'String', 'To', 'Split')

Điều này có thể kết thúc được hữu ích cho một số người tìm kiếm một giải pháp cho vấn đề này: stackoverflow.com/a/25732260/1454888
Augusto Barreto

Câu trả lời:


222

Tôi sẽ làm điều này với .match()như thế này:

'ThisIsTheStringToSplit'.match(/[A-Z][a-z]+/g);

nó sẽ tạo ra một mảng như thế này:

['This', 'Is', 'The', 'String', 'To', 'Split']

chỉnh sửa:string.split()phương thức cũng hỗ trợ regex nên có thể đạt được như thế này

'ThisIsTheStringToSplit'.split(/(?=[A-Z])/); // positive lookahead to keep the capital letters

điều đó cũng sẽ giải quyết vấn đề từ nhận xét:

"thisIsATrickyOne".split(/(?=[A-Z])/);

47
Điều này sẽ không tìm thấy các ký tự hoa đơn lẻ. Tôi đề xuất những điều sau: "thisIsATrickyOne".match(/([A-Z]?[^A-Z]*)/g).slice(0,-1)
andrewmu

18
.match(/[A-Z][a-z]+|[0-9]+/g).join(" ")

Điều này cũng sẽ xử lý các số .. phép nối ở cuối dẫn đến việc nối tất cả các mục mảng thành một câu nếu đó là những gì bạn đang tìm kiếm

'ThisIsTheStringToSplit'.match(/[A-Z][a-z]+|[0-9]+/g).join(" ")

Đầu ra

"This Is The String To Split"

Đây là hoàn hảo. Nhưng bất cứ ai sử dụng điều này nên cẩn thận trong trường hợp sau: 'ThisIs8TheSt3ringToSplit'.match(/[A-Z][a-z]+|[0-9]+/g).join(" ")sẽ xuất This Is 8 The St 3 To Split, bỏ qua chuỗi ký tự nhỏ ( ring) sau 3.
Diablo

9

Của bạn đây :)

var arr = UpperCaseArray("ThisIsTheStringToSplit");

function UpperCaseArray(input) {
    var result = input.replace(/([A-Z]+)/g, ",$1").replace(/^,/, "");
    return result.split(",");
}
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.