Saya tidak mendapatkan regex yang dioptimalkan yang memisahkan saya dengan String yang mendasarkan pada kejadian ruang putih pertama:
var str="72 tocirah sneab";
Saya perlu mendapatkan:
[
"72",
"tocirah sneab",
]
javascript
regex
Luca
sumber
sumber
Jawaban:
Jika Anda hanya peduli dengan karakter spasi (dan bukan tab atau karakter spasi putih lainnya) dan hanya peduli tentang segala sesuatu sebelum spasi pertama dan semua setelah spasi pertama, Anda bisa melakukannya tanpa ekspresi reguler seperti ini:
Perhatikan bahwa jika tidak ada ruang sama sekali, maka baris pertama akan mengembalikan string kosong dan baris kedua akan mengembalikan seluruh string. Pastikan itu adalah perilaku yang Anda inginkan dalam situasi itu (atau bahwa situasi itu tidak akan muncul).
sumber
Javascript tidak mendukung tampilan, jadi
split
tidak mungkin.match
bekerja:Trik lain:
bagaimana tentang:
dan kenapa tidak
atau mungkin
Pembaruan 2019 : pada ES2018, lookbehinds didukung:
sumber
str.match(/^(\S+)\s(.*)/).slice(1)
tidak akan bekerja untuk string yang tidak memiliki ruangDi ES6 Anda juga bisa
sumber
Terlambat dalam permainan, saya tahu tetapi tampaknya ada cara yang sangat sederhana untuk melakukan ini:
Ini akan pergi
arr[0]
dengan"72"
danarr[1]
dengan"tocirah sneab"
. Perhatikan bahwa arr [2] akan kosong, tetapi Anda bisa mengabaikannya.Sebagai referensi:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/String/split#Capturing_parentheses
sumber
tapi saya masih berpikir ada cara yang lebih cepat.
sumber
solusi georg bagus, tetapi rusak jika string tidak mengandung spasi. Jika string Anda memiliki kemungkinan tidak mengandung spasi, lebih aman untuk menggunakan .sit dan menangkap grup seperti ini:
sumber
Anda juga dapat menggunakan. Ganti hanya untuk mengganti kejadian pertama,
Meninggalkan / g.
DEMO
sumber
Hanya membagi string menjadi array dan rekatkan bagian-bagian yang Anda butuhkan bersama. Pendekatan ini sangat fleksibel, ia bekerja dalam banyak situasi dan mudah dipikirkan. Plus Anda hanya perlu satu panggilan fungsi.
Atau, jika Anda ingin memilih apa yang Anda butuhkan langsung dari string, Anda bisa melakukan sesuatu seperti ini:
Atau seperti ini:
Namun saya menyarankan contoh pertama.
Demo kerja: jsbin
sumber
Setiap kali saya perlu mendapatkan kelas dari daftar kelas atau bagian dari nama atau id kelas, saya selalu menggunakan split () lalu mendapatkannya secara spesifik dengan indeks array atau, paling sering dalam kasus saya, pop () untuk mendapatkan elemen terakhir atau shift () untuk mendapatkan yang pertama.
Contoh ini mendapatkan kelas div "gallery_148 ui-sortable" dan mengembalikan id galeri 148.
Saya yakin itu bisa dipadatkan menjadi lebih sedikit baris tapi saya membiarkannya diperluas untuk dibaca.
sumber
Saya membutuhkan hasil yang sedikit berbeda.
Saya ingin kata pertama, dan apa yang terjadi setelahnya - bahkan jika itu kosong.
jadi jika input yang
oneword
Anda dapatkanoneword
dan''
.Jika inputnya
one word and some more
Anda dapatkanone
danword and some more
.sumber
Saya tidak yakin mengapa semua jawaban lain begitu rumit, ketika Anda bisa melakukan semuanya dalam satu baris, menangani kekurangan ruang juga.
Sebagai contoh, mari kita dapatkan komponen pertama dan "lainnya" dari sebuah nama:
sumber
Fungsi berikut akan selalu membagi kalimat menjadi 2 elemen. Elemen pertama hanya akan berisi kata pertama dan elemen kedua akan berisi semua kata lain (atau itu akan menjadi string kosong).
sumber