Bagaimana saya bisa mengonversi string seperti 'helloThere' atau 'HelloThere' menjadi 'Hello There' di JavaScript?
javascript
regex
string
HyderA
sumber
sumber
Jawaban:
huruf besar huruf pertama - sebagai contoh.
Perhatikan spasi di
" $1"
.EDIT: menambahkan contoh kapitalisasi huruf pertama. Tentu saja, kalau-kalau huruf pertama sudah modal - Anda akan memiliki ruang luang untuk menghapus.
sumber
text.replace
, saya telah memanggil fungsi padding dengan argumen 2+ dengan spasi untuk keterbacaan jugaNon-GoogleChrome
?Atau menggunakan Lodash :
Contoh:
Lodash adalah pustaka yang bagus untuk memberikan pintasan ke banyak tugas js sehari-hari. Ada banyak fungsi manipulasi string serupa lainnya
camelCase
, seperti ,kebabCase
dll.sumber
hello world
maka output seharusnyaHello There
, Dalam hal ini loadash tidak akan membantu.hello world
keHello World
lodash.com/docs/4.17.15#upperFirsthello there
kepadahello world
.Saya punya masalah serupa dan menanganinya seperti ini:
Untuk solusi yang lebih kuat:
http://jsfiddle.net/PeYYQ/
Memasukkan:
Keluaran:
sumber
Contohnya tanpa efek samping.
Dalam ES6
sumber
String terbaik yang saya temukan untuk menguji fungsi kasus unta-ke-judul-kasus adalah contoh yang sangat tidak masuk akal, yang menguji banyak kasing tepi. Sepengetahuan saya, tidak ada fungsi yang diposting sebelumnya menangani ini dengan benar :
ToGETYourGEDInTimeASongTentang 26ABCsIsOfTheEssenceTetapi, PersonalCard IDUntuk Pengguna456InRoom26PelatihanABC26Saat ini tidakMudahAs123ForC3POOrR2D2Or2R2D
Ini harus dikonversi menjadi:
Untuk Mendapatkan GED Anda Tepat Waktu Lagu tentang 26 ABC Penting, Tapi Kartu ID Pribadi Untuk Pengguna 456 Di Kamar 26A Berisi ABC 26 Kali Tidak Semudah 123 Untuk C3PO Atau R2D2 Atau 2R2D
Jika Anda menginginkan fungsi sederhana yang menangani kasus seperti di atas (dan lebih banyak kasus daripada banyak jawaban sebelumnya), inilah yang saya tulis. Kode ini tidak terlalu elegan atau cepat, tetapi sederhana, dapat dimengerti, dan berfungsi.
Contoh runnable online ada di jsfiddle , atau Anda dapat melihat output snippet di bawah ini di konsol Anda:
sumber
Berdasarkan salah satu contoh di atas saya datang dengan ini:
Ini bekerja untuk saya karena digunakan
.trim()
untuk menangani kasus tepi di mana huruf pertama ditulis dengan huruf kapital dan Anda berakhir dengan ruang tambahan terkemuka.Referensi: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/Trim
sumber
Ok, saya beberapa tahun terlambat ke permainan, tapi saya punya pertanyaan serupa, dan saya ingin membuat solusi satu-ganti untuk setiap input yang mungkin. Saya harus memberikan sebagian besar kredit kepada @ ZenMaster di utas ini dan @Benjamin Udink ten Cate di utas ini . Berikut kodenya:
Ini memiliki tiga klausa, semua menggunakan lookahead untuk mencegah mesin regex dari mengkonsumsi terlalu banyak karakter:
[A-Z](?=[A-Z][a-z])
mencari huruf kapital yang diikuti dengan huruf kapital kemudian huruf kecil. Ini untuk mengakhiri akronim seperti AS.[^A-Z](?=[A-Z])
mencari huruf kapital diikuti huruf kapital. Ini mengakhiri kata-kata seperti myWord dan simbol seperti 99Bottles.[a-zA-Z](?=[^a-zA-Z])
mencari surat diikuti oleh bukan huruf. Ini mengakhiri kata sebelum simbol seperti BFG9000.Pertanyaan ini ada di bagian atas hasil pencarian saya, jadi semoga saya dapat menghemat waktu orang lain!
sumber
Ini versi saya. Itu menambahkan spasi sebelum setiap huruf bahasa Inggris huruf besar yang datang setelah huruf bahasa Inggris huruf kecil dan juga huruf kapital huruf pertama jika diperlukan:
Sebagai contoh:
thisIsCamelCase -> Ini Adalah Kasus Unta
IsCamelCase -> Ini Ini Kasus Unta
thisIsCamelCase123 -> Ini Adalah Unta Case123
sumber
Implementasi ini mempertimbangkan huruf besar dan angka berturut-turut.
sumber
Anda dapat menggunakan fungsi seperti ini:
Kode dengan sekelompok string tes di sini: http://jsfiddle.net/jfriend00/FWLuV/ .
Versi alternatif yang membuat spasi di sini: http://jsfiddle.net/jfriend00/Uy2ac/ .
sumber
" helloWorld"
, misalnya.coba perpustakaan ini
http://sugarjs.com/api/String/titleize
sumber
Tidak ada jawaban di atas yang cocok untuk saya, jadi harus datang dengan sepeda sendiri:
Kasus uji:
sumber
Ini berfungsi untuk saya lihat ini
sumber
string.replace(/([A-Z]+)/g, " $1").replace(/([A-Z][a-z])/g, "$1");
Saya pikir ini bisa dilakukan hanya dengan reg exp
/([a-z]|[A-Z]+)([A-Z])/g
dan penggantian"$1 $2"
.ILoveTheUSADope -> I Love The USA Dope
sumber
QWERTY
yang dikembalikanQWERT Y
.Jika Anda berurusan dengan Capital Camel Case , snippet ini dapat membantu Anda, juga berisi beberapa spesifikasi sehingga Anda dapat yakin bahwa itu cocok dengan kasus Anda.
Dan spesifikasi:
sumber
Saya tidak mencoba jawaban semua orang, tetapi beberapa solusi yang saya mainkan tidak cocok dengan semua persyaratan saya.
Saya dapat menemukan sesuatu yang ...
sumber
Di bawah ini adalah tautan yang menunjukkan string unta ke string kalimat menggunakan regex.
Memasukkan
myCamelCaseSTRINGToSPLITDemo
Keluaran
my Camel Case STRING To SPLIT Demo
Ini adalah regex untuk konversi case unta ke teks kalimat
dengan
$1 $2
sebagai subtitusi.Klik untuk melihat konversi pada regex
sumber
Masukkan javaScript
Output Java Script
sumber
Satu lagi solusi berdasarkan RegEx.
Penjelasan
RegEx di atas terdiri dari dua bagian serupa yang dipisahkan oleh operator OR . Paruh pertama:
([A-Z])
- cocok dengan huruf besar ...(?=[A-Z][a-z])
- Diikuti dengan urutan huruf besar dan kecil.Ketika diterapkan pada urutan FOo , ini secara efektif cocok dengan huruf F -nya .
Atau skenario kedua:
([a-z])
- cocok dengan huruf kecil ...(?=[A-Z])
- Diikuti dengan huruf besar.Ketika diterapkan ke barFoo urutan , ini secara efektif cocok dengan huruf r .
Ketika semua kandidat pengganti ditemukan, hal terakhir yang harus dilakukan adalah mengganti mereka dengan huruf yang sama tetapi dengan karakter spasi tambahan. Untuk ini, kita dapat menggunakan
'$& '
sebagai pengganti, dan itu akan menyelesaikan untuk substring yang cocok diikuti oleh karakter spasi.Contoh
sumber
Menambahkan solusi ES6 lain yang saya sukai lebih baik setelah tidak puas dengan beberapa pemikiran di atas.
https://codepen.io/902Labs/pen/mxdxRv?editors=0010#0
sumber