Javascript Split string pada Karakter Huruf Besar

106

Bagaimana Anda membagi string menjadi array di Javascript dengan karakter UpperCase?

Jadi saya ingin berpisah:

'ThisIsTheStringToSplit'

ke

('This', 'Is', 'The', 'String', 'To', 'Split')
Nicholas Murray
sumber
Ini bisa menjadi berguna bagi beberapa orang yang mencari solusi untuk masalah ini: stackoverflow.com/a/25732260/1454888
Augusto Barreto

Jawaban:

224

Saya akan melakukan ini dengan .match()seperti ini:

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

itu akan membuat array seperti ini:

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

edit: karena string.split()metode ini juga mendukung regex, ini dapat dicapai seperti ini

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

itu juga akan menyelesaikan masalah dari komentar:

"thisIsATrickyOne".split(/(?=[A-Z])/);
Teneff
sumber
47
Ini tidak akan menemukan satu karakter huruf besar. Saya menyarankan yang berikut: "thisIsATrickyOne".match(/([A-Z]?[^A-Z]*)/g).slice(0,-1)
andrewmu
18
.match(/[A-Z][a-z]+|[0-9]+/g).join(" ")

Ini juga harus menangani angka-angka .. gabungan di akhir menghasilkan penggabungan semua item array ke kalimat jika itu yang Anda cari

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

Keluaran

"This Is The String To Split"
Max
sumber
Ini sempurna. Tetapi siapa pun yang menggunakan ini harus berhati-hati dalam kasus berikut: 'ThisIs8TheSt3ringToSplit'.match(/[A-Z][a-z]+|[0-9]+/g).join(" ")akan mengeluarkan This Is 8 The St 3 To Split, menghapus string kasus kecil ( ring) setelahnya 3.
Diablo
9

Ini dia :)

var arr = UpperCaseArray("ThisIsTheStringToSplit");

function UpperCaseArray(input) {
    var result = input.replace(/([A-Z]+)/g, ",$1").replace(/^,/, "");
    return result.split(",");
}
Manuel van Rijn
sumber
0

Ini adalah solusi saya yang cepat, lintas platform, tidak bergantung pada pengkodean, dan dapat ditulis dalam bahasa apa pun dengan mudah tanpa ketergantungan.

var s1 = "ThisЭтотΨόυτÜimunəՕրինակPříkladדוגמאΠαράδειγμαÉlda";
s2 = s1.toLowerCase();
result="";
for(i=0; i<s1.length; i++)
{
 if(s1[i]!==s2[i]) result = result +' ' +s1[i];
 else result = result + s2[i];
}
result.split(' ');
Ayay Matty
sumber