Saya memiliki string seperti ini

test/something/else

Saya ingin menghasilkan dua variabel

first = test
second = something/else

Saya mencoba dengan

const [first, ...second] = "test/something/else".split("/");

Dan itu memberi saya nilai yang tepat untuk pertama tetapi untuk kedua ini adalah array. Jadi saya harus bergabung dengan array untuk mendapatkan nilai yang saya butuhkan?

0
handsome 12 Mei 2021, 07:15

3 jawaban

Jawaban Terbaik

Gunakan ekspresi reguler untuk mencocokkan (tunggal) / diikuti oleh apa pun, sehingga hasilnya adalah 2 string yang Anda inginkan:

const str = 'test/something/else';
const [, first, second] = str.match(/([^/]+)\/(.*)/);
console.log(first);
console.log(second);

Jika Anda harus menggunakan split, dan Anda tidak menginginkan larik tambahan, Anda dapat melakukan hal serupa dengan memasukkan bagian kedua ke dalam grup tangkapan:

const str = 'test/something/else';
const [first, second] = str.split(/\/(.*)/);
console.log(first);
console.log(second);
4
CertainPerformance 12 Mei 2021, 04:19

Solusinya sederhana, kita harus mengambil 2 variabel, dalam satu variabel menetapkan string yang menyertakan '/' kemudian di variabel lain menetapkan metode split split(//(.*)/) dengan ekspresi dan log konsol

var str = "how r u?/kkk/jj";
const [first, second] = str.split(/\/(.*)/);
console.log(first);
console.log(second);

Metode split memecah string dan menetapkan mereka ke array. String akan terputus setelah '/' dan setiap kali konsol mencatat item, string yang terputus akan ditampilkan.

0
Mahish Dino 12 Mei 2021, 07:03

Benar, perintah bawaan idiomatik untuk melakukan ini adalah .split() dan kemudian .join(‘’) elemen ekor.

Mungkin (sangat sedikit) lebih cepat untuk memeriksa indeks dan mengiris string dengan itu, seperti

function splitAt(str, delimiter) {
  const idx = str.indexOf(delimiter);
  const head = str.slice(0, idx);
  const tail = str.slice(idx);
  return [head, tail];
}
0
superhawk610 12 Mei 2021, 04:24