Cara menggunakan javascript string to file

Di Javascript, data teks disimpan sebagai string. Tidak ada tipe data sendiri untuk satu buah karakter.

UTF-16 selalu digunakan sebagai format internal string, hal tersebut tidak terikat dengan jenis encoding yang digunakan oleh halaman.

Mari kita lihat berbagai jenis petik.

String dapat ditutup dengan petik satu, petik dua, maupun backtick:

let single = 'single-quoted';
let double = "double-quoted";

let backticks = `backticks`;

Petik satu dan petik dua kurang lebih hampir sama. Akan tetapi backtick memiliki perbedaan, yaitu memperbolehkan kita untuk menyisipkan ekspresi ke dalam string, dengan menaruhnya di dalam

let str1 = "Hello\nWorld"; // dua baris menggunakan "simbol baris baru"

// dua baris menggunakan backtick
let str2 = `Hello
World`;

alert(str1 == str2); // true
0:

function sum(a, b) {
  return a + b;
}

alert(`1 + 2 = ${sum(1, 2)}.`); // 1 + 2 = 3.

Kelebihan backtick yang lain yaitu backtick memperbolehkan sebuah string untuk terdiri lebih dari satu baris:

let guestList = `Guests:
 * John
 * Pete
 * Mary
`;

alert(guestList); // list tamu, dipisahkan per baris

Lebih rapi, kan? Tetapi petik satu atau dua tidak bekerja seperti itu.

Jika kita coba untuk menggunakan mereka untuk lebih dari satu baris, akan terjadi error:

let guestList = "Guests: // Error: Unexpected token ILLEGAL
  * John";

Petik satu dan petik dua berasal dari masa lalu saat bahasa pemrograman dibuat, dimana kebutuhan untuk string lebih dari satu baris belum dipikirkan. Backtick muncul di kemudian hari, dan lebih fleksibel.

Backtick juga memperbolehkan kita untuk menspesifikasi “fungsi template” sebelum backtick pertama. Syntaxnya yaitu:

let str1 = "Hello\nWorld"; // dua baris menggunakan "simbol baris baru"

// dua baris menggunakan backtick
let str2 = `Hello
World`;

alert(str1 == str2); // true
1. Fungsi
let str1 = "Hello\nWorld"; // dua baris menggunakan "simbol baris baru"

// dua baris menggunakan backtick
let str2 = `Hello
World`;

alert(str1 == str2); // true
2 dipanggil secara otomatis, menerima string dan ekspresi yang berada di dalamnya dan bisa memproses mereka. Ini disebut “tagged templates”. Fitur ini membuat implementasi kustom templating lebih mudah, tapi jaran dipakai dalam praktik. Kamu bisa membaca lebih tentang ini di .

Masih mungkin untuk membuat string dengan banyak baris menggunakan petik satu atau petik dua dengan menggunakan “karakter newline”, ditulis seperti berikut

let str1 = "Hello\nWorld"; // dua baris menggunakan "simbol baris baru"

// dua baris menggunakan backtick
let str2 = `Hello
World`;

alert(str1 == str2); // true
3, yang menandakan baris baru:

let guestList = "Guests:\n * John\n * Pete\n * Mary";

alert(guestList); // list tamu yang dipisahkan per baris

Sebagai contoh, kedua baris berikut sama saja, hanya ditulis dengan cara yang berbeda:

let str1 = "Hello\nWorld"; // dua baris menggunakan "simbol baris baru"

// dua baris menggunakan backtick
let str2 = `Hello
World`;

alert(str1 == str2); // true

Ada karakter spesial lain, tetapi mereka jarang digunakan

Berikut adalah daftar lengkapnya:

CharacterDescription
let str1 = "Hello\nWorld"; // dua baris menggunakan "simbol baris baru"

// dua baris menggunakan backtick
let str2 = `Hello
World`;

alert(str1 == str2); // true
3Baris baru
let str1 = "Hello\nWorld"; // dua baris menggunakan "simbol baris baru"

// dua baris menggunakan backtick
let str2 = `Hello
World`;

alert(str1 == str2); // true
5Carriage return: tidak digunakan sendiri. File teks milik di Windows menggunakan kombinasi dari dua karakter
let str1 = "Hello\nWorld"; // dua baris menggunakan "simbol baris baru"

// dua baris menggunakan backtick
let str2 = `Hello
World`;

alert(str1 == str2); // true
6 untuk menandakan baris baru.
let str1 = "Hello\nWorld"; // dua baris menggunakan "simbol baris baru"

// dua baris menggunakan backtick
let str2 = `Hello
World`;

alert(str1 == str2); // true
7,
let str1 = "Hello\nWorld"; // dua baris menggunakan "simbol baris baru"

// dua baris menggunakan backtick
let str2 = `Hello
World`;

alert(str1 == str2); // true
8Petik-petik
let str1 = "Hello\nWorld"; // dua baris menggunakan "simbol baris baru"

// dua baris menggunakan backtick
let str2 = `Hello
World`;

alert(str1 == str2); // true
9Backslash
alert( "\u00A9" ); // ©
alert( "\u{20331}" ); // 佫, sebuah karakter mandarin (unicode panjang)
alert( "\u{1F60D}" ); // 😍, sebuah simbol wajah tersenyum (unicode panjang lainnya)
0Tab
alert( "\u00A9" ); // ©
alert( "\u{20331}" ); // 佫, sebuah karakter mandarin (unicode panjang)
alert( "\u{1F60D}" ); // 😍, sebuah simbol wajah tersenyum (unicode panjang lainnya)
1,
alert( "\u00A9" ); // ©
alert( "\u{20331}" ); // 佫, sebuah karakter mandarin (unicode panjang)
alert( "\u{1F60D}" ); // 😍, sebuah simbol wajah tersenyum (unicode panjang lainnya)
2,
alert( "\u00A9" ); // ©
alert( "\u{20331}" ); // 佫, sebuah karakter mandarin (unicode panjang)
alert( "\u{1F60D}" ); // 😍, sebuah simbol wajah tersenyum (unicode panjang lainnya)
3Backspace, Form Feed, Vertical Tab – tetap bisa digunakan untuk kompabilitas, sekarang sudah tidak digunakan.
alert( "\u00A9" ); // ©
alert( "\u{20331}" ); // 佫, sebuah karakter mandarin (unicode panjang)
alert( "\u{1F60D}" ); // 😍, sebuah simbol wajah tersenyum (unicode panjang lainnya)
4Karakter unicode dengan nilai heksadesimal
alert( "\u00A9" ); // ©
alert( "\u{20331}" ); // 佫, sebuah karakter mandarin (unicode panjang)
alert( "\u{1F60D}" ); // 😍, sebuah simbol wajah tersenyum (unicode panjang lainnya)
5, misalnya
alert( "\u00A9" ); // ©
alert( "\u{20331}" ); // 佫, sebuah karakter mandarin (unicode panjang)
alert( "\u{1F60D}" ); // 😍, sebuah simbol wajah tersenyum (unicode panjang lainnya)
6 itu sama saja dengan
alert( "\u00A9" ); // ©
alert( "\u{20331}" ); // 佫, sebuah karakter mandarin (unicode panjang)
alert( "\u{1F60D}" ); // 😍, sebuah simbol wajah tersenyum (unicode panjang lainnya)
7.
alert( "\u00A9" ); // ©
alert( "\u{20331}" ); // 佫, sebuah karakter mandarin (unicode panjang)
alert( "\u{1F60D}" ); // 😍, sebuah simbol wajah tersenyum (unicode panjang lainnya)
8Sebuah simbol unicode dengan nilai heksadesimal
alert( "\u00A9" ); // ©
alert( "\u{20331}" ); // 佫, sebuah karakter mandarin (unicode panjang)
alert( "\u{1F60D}" ); // 😍, sebuah simbol wajah tersenyum (unicode panjang lainnya)
9 di dalam encoding UTF-16, sebagai contoh
alert( 'I\'m the Walrus!' ); // I'm the Walrus!
0 – adalah sebuah unicode untuk simbol copyright
alert( 'I\'m the Walrus!' ); // I'm the Walrus!
1. Simbol ini harus terdiri dari 4 digit heksadesimal.
alert( 'I\'m the Walrus!' ); // I'm the Walrus!
2 (1 to 6 karakter heksadesimal)Sebuah simbol unicode dengan encoding UTF-32. Beberapa karakter langka menggunakan dua simbol unicode, yang memakan 4 byte. Dengan cara ini kita dapat menggunakan kode yang panjang.

Contoh dengan unicode:

alert( "\u00A9" ); // ©
alert( "\u{20331}" ); // 佫, sebuah karakter mandarin (unicode panjang)
alert( "\u{1F60D}" ); // 😍, sebuah simbol wajah tersenyum (unicode panjang lainnya)

Karakter-karakter spesial yang diawali dengan karakter backslash

alert( 'I\'m the Walrus!' ); // I'm the Walrus!
3 kadang dipanggil dengan sebutan “escape character”.

Kita kadang dapat menggunakannya apabila kita ingin menggunakan petik di dalam string.

Misalnya:

alert( 'I\'m the Walrus!' ); // I'm the Walrus!

Seperti yang kita lihat, kita harus menambahkan backslash di depan petik yang di dalam string

let str1 = "Hello\nWorld"; // dua baris menggunakan "simbol baris baru"

// dua baris menggunakan backtick
let str2 = `Hello
World`;

alert(str1 == str2); // true
7, karena jika tidak petik tersebut akan menandakan akhir dari sebuah string.

Tentu saja, hanya jenis petik yang sama dengan penutup string yang perlu di “escape”. Jadi, solusi yang lebih elegan yaitu mengganti petik satu menjadi petik dua atau backtick:

alert( `I'm the Walrus!` ); // I'm the Walrus!

Ingat bahwa backslash

alert( 'I\'m the Walrus!' ); // I'm the Walrus!
3 hanya dipakai untuk Javascript agar dapat membaca string dengan benar. Di dalam memori, string tidak memiliki
alert( 'I\'m the Walrus!' ); // I'm the Walrus!
3. Anda dapat melihatnya secara langsung pada contoh
alert( 'I\'m the Walrus!' ); // I'm the Walrus!
7 di atas.

Tetapi bagaimana jika kita ingin menampilkan backslash

alert( 'I\'m the Walrus!' ); // I'm the Walrus!
3 di dalam sebuah string?

Hal tersebut bisa dilakukan, tetapi kita harus menulisnya dua kali seperti ini

let str1 = "Hello\nWorld"; // dua baris menggunakan "simbol baris baru"

// dua baris menggunakan backtick
let str2 = `Hello
World`;

alert(str1 == str2); // true
9:

alert( `The backslash: \\` ); // The backslash: \

Properti

alert( `I'm the Walrus!` ); // I'm the Walrus!
0 memiliki panjang dari string:

function sum(a, b) {
  return a + b;
}

alert(`1 + 2 = ${sum(1, 2)}.`); // 1 + 2 = 3.
0

Perlu diingat bahwa

let str1 = "Hello\nWorld"; // dua baris menggunakan "simbol baris baru"

// dua baris menggunakan backtick
let str2 = `Hello
World`;

alert(str1 == str2); // true
3 adalah sebuah karakter spesial, jadi panjang dari string adalah
alert( `I'm the Walrus!` ); // I'm the Walrus!
2.

alert( `I'm the Walrus!` ); // I'm the Walrus!
0 adalah sebuah properti

Orang dengan latar belakang di bahasa pemrograman lain kadang salah mengetik

alert( `I'm the Walrus!` ); // I'm the Walrus!
4 alih-alih
alert( `I'm the Walrus!` ); // I'm the Walrus!
5. Hal tersebut tidak bekerja.

Perlu diingat bahwa

alert( `I'm the Walrus!` ); // I'm the Walrus!
5 adalah properti numerik, bukan sebuah fungsi. Tidak perlu menambahkan kurung di belakangnya.

Untuk mengakses karakter pada posisi

alert( `I'm the Walrus!` ); // I'm the Walrus!
7, digunakan kurung kotak
alert( `I'm the Walrus!` ); // I'm the Walrus!
8 atau dengan method str.charAt(pos). Karakter pertama dimulai dari posisi ke-0:

function sum(a, b) {
  return a + b;
}

alert(`1 + 2 = ${sum(1, 2)}.`); // 1 + 2 = 3.
1

Kurung kotak adalah cara modern untuk mengakses sebuah karakter, sementara

alert( `I'm the Walrus!` ); // I'm the Walrus!
9 ada karena alasan historis.

Perbedaan satu-satunya di antara mereka adalah apabila tidak ada karakter yang ditemukan,

alert( `The backslash: \\` ); // The backslash: \
0 mengembalikan
alert( `The backslash: \\` ); // The backslash: \
1, dan
alert( `I'm the Walrus!` ); // I'm the Walrus!
9 mengembalikan string kosong:

function sum(a, b) {
  return a + b;
}

alert(`1 + 2 = ${sum(1, 2)}.`); // 1 + 2 = 3.
2

Kita juga bisa mengakses karakter per karakter menggunakan sintaks

alert( `The backslash: \\` ); // The backslash: \
3:

function sum(a, b) {
  return a + b;
}

alert(`1 + 2 = ${sum(1, 2)}.`); // 1 + 2 = 3.
3

Nilai string tidak dapat diubah di Javascript. Tak mungkin mengubah sebuah karakter.

Mari kita coba buktikan:

function sum(a, b) {
  return a + b;
}

alert(`1 + 2 = ${sum(1, 2)}.`); // 1 + 2 = 3.
4

Salah satu cara untuk mengatasi hal tersebut adalah untuk membuat string baru lalu memasukkan nilainya ke

alert( `The backslash: \\` ); // The backslash: \
4.

Sebagai contoh:

function sum(a, b) {
  return a + b;
}

alert(`1 + 2 = ${sum(1, 2)}.`); // 1 + 2 = 3.
5

Di bab ini kita akan melihat contoh lebih banyak dari ini.

Metode toLowerCase() dan toUpperCase() mengganti case:

function sum(a, b) {
  return a + b;
}

alert(`1 + 2 = ${sum(1, 2)}.`); // 1 + 2 = 3.
6

Atau, apabila kita hanya ingin sebuah karakter yang diubah menjadi huruf kecil:

function sum(a, b) {
  return a + b;
}

alert(`1 + 2 = ${sum(1, 2)}.`); // 1 + 2 = 3.
7

Ada banyak cara untuk mencari sebuah substring di dalam sebuah string.

Cara yang pertama yaitu str.indexOf(substr, pos).

Method ini mencari

alert( `The backslash: \\` ); // The backslash: \
5 di dalam
alert( `The backslash: \\` ); // The backslash: \
4, mulai dari posisi
alert( `I'm the Walrus!` ); // I'm the Walrus!
7 yang diberikan, dan mengembalikan posisi dimana substring ditemukan atau
alert( `The backslash: \\` ); // The backslash: \
8 jika tidak ditemukan.

Misalnya:

function sum(a, b) {
  return a + b;
}

alert(`1 + 2 = ${sum(1, 2)}.`); // 1 + 2 = 3.
8

Parameter kedua yang opsional memperbolehkan kita untuk mencari dari posisi yang ditentukan.

Misalnya, kemunculan pertama

alert( `The backslash: \\` ); // The backslash: \
9 ada di posisi
function sum(a, b) {
  return a + b;
}

alert(`1 + 2 = ${sum(1, 2)}.`); // 1 + 2 = 3.
00. Untuk mencari kemunculan berikutnya, ayo kita mulai pencarian dari posisi
function sum(a, b) {
  return a + b;
}

alert(`1 + 2 = ${sum(1, 2)}.`); // 1 + 2 = 3.
01:

function sum(a, b) {
  return a + b;
}

alert(`1 + 2 = ${sum(1, 2)}.`); // 1 + 2 = 3.
9

Jika kita tertarik dengan semua kemunculan, kita bisa menjalankan

function sum(a, b) {
  return a + b;
}

alert(`1 + 2 = ${sum(1, 2)}.`); // 1 + 2 = 3.
02 di dalam loop. Setiap panggilan dibuat dengan posisi setelah kemunculan sebelumnya:

let guestList = `Guests:
 * John
 * Pete
 * Mary
`;

alert(guestList); // list tamu, dipisahkan per baris
0

Algoritma yang sama dapat ditulis lebih pendek:

let guestList = `Guests:
 * John
 * Pete
 * Mary
`;

alert(guestList); // list tamu, dipisahkan per baris
1

function sum(a, b) {
  return a + b;
}

alert(`1 + 2 = ${sum(1, 2)}.`); // 1 + 2 = 3.
03

Ada juga method yang hampir sama str.lastIndexOf(substr, position) yang mencari dari akhir sebuah string sampai ke awalnya.

Cara tersebut akan menemukan kemunculan dalam urutan yang terbalik.

Ada sedikit kerepotan dalam menggunakan

function sum(a, b) {
  return a + b;
}

alert(`1 + 2 = ${sum(1, 2)}.`); // 1 + 2 = 3.
02 di dalam
function sum(a, b) {
  return a + b;
}

alert(`1 + 2 = ${sum(1, 2)}.`); // 1 + 2 = 3.
05. Kita tidak dapat menggunakannya seperti ini:

let guestList = `Guests:
 * John
 * Pete
 * Mary
`;

alert(guestList); // list tamu, dipisahkan per baris
2

Contoh di atas tidak bekerja karena

function sum(a, b) {
  return a + b;
}

alert(`1 + 2 = ${sum(1, 2)}.`); // 1 + 2 = 3.
06 mengembalikan
function sum(a, b) {
  return a + b;
}

alert(`1 + 2 = ${sum(1, 2)}.`); // 1 + 2 = 3.
07 (artinya kemunculan ditemukan di awal string).
function sum(a, b) {
  return a + b;
}

alert(`1 + 2 = ${sum(1, 2)}.`); // 1 + 2 = 3.
05 menganggap
function sum(a, b) {
  return a + b;
}

alert(`1 + 2 = ${sum(1, 2)}.`); // 1 + 2 = 3.
07 sebagai
function sum(a, b) {
  return a + b;
}

alert(`1 + 2 = ${sum(1, 2)}.`); // 1 + 2 = 3.
10.

Jadi, kita harus mengecek dengan nilai

alert( `The backslash: \\` ); // The backslash: \
8, seperti ini:

let guestList = `Guests:
 * John
 * Pete
 * Mary
`;

alert(guestList); // list tamu, dipisahkan per baris
3

Salah satu trik lama yang digunakan disini adalah operator

function sum(a, b) {
  return a + b;
}

alert(`1 + 2 = ${sum(1, 2)}.`); // 1 + 2 = 3.
12. Operator ini mengubah angka menjadi integer 32-bit (menghilangkan bagian desimal jika ada) lalu menegasikan semua bit pada representasi binernya.

Dalam praktik, hal tersebut berarti: untuk integer 32-bit

function sum(a, b) {
  return a + b;
}

alert(`1 + 2 = ${sum(1, 2)}.`); // 1 + 2 = 3.
13 sama dengan
function sum(a, b) {
  return a + b;
}

alert(`1 + 2 = ${sum(1, 2)}.`); // 1 + 2 = 3.
14.

Sebagai contoh:

let guestList = `Guests:
 * John
 * Pete
 * Mary
`;

alert(guestList); // list tamu, dipisahkan per baris
4

Seperti yang kita lihat,

function sum(a, b) {
  return a + b;
}

alert(`1 + 2 = ${sum(1, 2)}.`); // 1 + 2 = 3.
13 bernilai nol apabila
function sum(a, b) {
  return a + b;
}

alert(`1 + 2 = ${sum(1, 2)}.`); // 1 + 2 = 3.
16 (untuk semua signed integer
function sum(a, b) {
  return a + b;
}

alert(`1 + 2 = ${sum(1, 2)}.`); // 1 + 2 = 3.
17).

Jadi, pengecekan di dalam

function sum(a, b) {
  return a + b;
}

alert(`1 + 2 = ${sum(1, 2)}.`); // 1 + 2 = 3.
18 bernilai benar apabila hasil dari
function sum(a, b) {
  return a + b;
}

alert(`1 + 2 = ${sum(1, 2)}.`); // 1 + 2 = 3.
02 tidak bernilai
alert( `The backslash: \\` ); // The backslash: \
8. Dengan kata lain, jika kemunculan ditemukan.

Orang-orang menggunakannya untuk memperpendek pengecekan

function sum(a, b) {
  return a + b;
}

alert(`1 + 2 = ${sum(1, 2)}.`); // 1 + 2 = 3.
02:

let guestList = `Guests:
 * John
 * Pete
 * Mary
`;

alert(guestList); // list tamu, dipisahkan per baris
5

Biasanya tidak direkomendasikan untuk menggunakan fitur bahasa dengan cara yang tidak jelas, tetapi trik ini biasa digunakan di kode yang kuno, jadi kita harus memahaminya.

Ingat:

function sum(a, b) {
  return a + b;
}

alert(`1 + 2 = ${sum(1, 2)}.`); // 1 + 2 = 3.
22 dibaca sebagai “if ditemukan”.

Untuk lebih detail, karena bilangan yang besar dipotong menjadi 32-bit oleh operator

function sum(a, b) {
  return a + b;
}

alert(`1 + 2 = ${sum(1, 2)}.`); // 1 + 2 = 3.
12, ada angka lain yang memberikan hasil
function sum(a, b) {
  return a + b;
}

alert(`1 + 2 = ${sum(1, 2)}.`); // 1 + 2 = 3.
07, angka yang terkecil yaitu
function sum(a, b) {
  return a + b;
}

alert(`1 + 2 = ${sum(1, 2)}.`); // 1 + 2 = 3.
25. Hal tersebut menyebabkan trik ini benar apabila string yang dites tidak sepanjang itu.

Kita dapat melihat bahwa trik ini hanya digunakan di kode yang kuno, karena Javascript modern menyediakan method

function sum(a, b) {
  return a + b;
}

alert(`1 + 2 = ${sum(1, 2)}.`); // 1 + 2 = 3.
26 (lihat di bawah).

Method yang lebih modern str.includes(substr, pos) mengembalikan

function sum(a, b) {
  return a + b;
}

alert(`1 + 2 = ${sum(1, 2)}.`); // 1 + 2 = 3.
27 tergantung dengan apakah
alert( `The backslash: \\` ); // The backslash: \
4 mengandung
alert( `The backslash: \\` ); // The backslash: \
5 di dalamnya.

Ini adalah pilihan yang cocok apabila kita hanya perlu mengetes apakah

alert( `The backslash: \\` ); // The backslash: \
5 ada, tetapi tidak memerlukan posisinya:

let guestList = `Guests:
 * John
 * Pete
 * Mary
`;

alert(guestList); // list tamu, dipisahkan per baris
6

Parameter opsinal kedua dari

function sum(a, b) {
  return a + b;
}

alert(`1 + 2 = ${sum(1, 2)}.`); // 1 + 2 = 3.
31 adalah posisi dimana pencarian mulai dilakukan:

let guestList = `Guests:
 * John
 * Pete
 * Mary
`;

alert(guestList); // list tamu, dipisahkan per baris
7

Method str.startsWith dan str.endsWith melakukan fungsi seperti namanya:

let guestList = `Guests:
 * John
 * Pete
 * Mary
`;

alert(guestList); // list tamu, dipisahkan per baris
8

Ada 3 cara untuk mengambil sebuah substring di Javascript:

function sum(a, b) {
  return a + b;
}

alert(`1 + 2 = ${sum(1, 2)}.`); // 1 + 2 = 3.
32,
alert( `The backslash: \\` ); // The backslash: \
5 dan
function sum(a, b) {
  return a + b;
}

alert(`1 + 2 = ${sum(1, 2)}.`); // 1 + 2 = 3.
34.

function sum(a, b) {
  return a + b;
}

alert(`1 + 2 = ${sum(1, 2)}.`); // 1 + 2 = 3.
35

Mengembalikan bagian dari string dari

function sum(a, b) {
  return a + b;
}

alert(`1 + 2 = ${sum(1, 2)}.`); // 1 + 2 = 3.
36 sampai (tapi tidak termasuk)
function sum(a, b) {
  return a + b;
}

alert(`1 + 2 = ${sum(1, 2)}.`); // 1 + 2 = 3.
37.

Sebagai contoh:

let guestList = `Guests:
 * John
 * Pete
 * Mary
`;

alert(guestList); // list tamu, dipisahkan per baris
9

Jika tidak ada parameter kedua, maka

function sum(a, b) {
  return a + b;
}

alert(`1 + 2 = ${sum(1, 2)}.`); // 1 + 2 = 3.
34 akan mengambil semua bagian dari
function sum(a, b) {
  return a + b;
}

alert(`1 + 2 = ${sum(1, 2)}.`); // 1 + 2 = 3.
36 sampai akhir string:

let guestList = "Guests: // Error: Unexpected token ILLEGAL
  * John";
0

Nilai negatif untuk

function sum(a, b) {
  return a + b;
}

alert(`1 + 2 = ${sum(1, 2)}.`); // 1 + 2 = 3.
40 juga bisa digunakan. Nilai negatif berarti posisinya dihitung dari akhir string:

let guestList = "Guests: // Error: Unexpected token ILLEGAL
  * John";
1

function sum(a, b) {
  return a + b;
}

alert(`1 + 2 = ${sum(1, 2)}.`); // 1 + 2 = 3.
41

Mengembalikan bagian dari string di antara

function sum(a, b) {
  return a + b;
}

alert(`1 + 2 = ${sum(1, 2)}.`); // 1 + 2 = 3.
36 dan
function sum(a, b) {
  return a + b;
}

alert(`1 + 2 = ${sum(1, 2)}.`); // 1 + 2 = 3.
37.

Method ini hampir sama dengan

function sum(a, b) {
  return a + b;
}

alert(`1 + 2 = ${sum(1, 2)}.`); // 1 + 2 = 3.
34, tetapi nilai
function sum(a, b) {
  return a + b;
}

alert(`1 + 2 = ${sum(1, 2)}.`); // 1 + 2 = 3.
36 boleh lebih besar daripada
function sum(a, b) {
  return a + b;
}

alert(`1 + 2 = ${sum(1, 2)}.`); // 1 + 2 = 3.
37.

Sebagai contoh:

let guestList = "Guests: // Error: Unexpected token ILLEGAL
  * John";
2

Parameter negatif tidak didukung (tidak seperti slice), mereka dianggap sebagai

function sum(a, b) {
  return a + b;
}

alert(`1 + 2 = ${sum(1, 2)}.`); // 1 + 2 = 3.
07.

function sum(a, b) {
  return a + b;
}

alert(`1 + 2 = ${sum(1, 2)}.`); // 1 + 2 = 3.
48

Mengembalikan substring dari

function sum(a, b) {
  return a + b;
}

alert(`1 + 2 = ${sum(1, 2)}.`); // 1 + 2 = 3.
36, dengan panjang
alert( `I'm the Walrus!` ); // I'm the Walrus!
0.

Dibandingkan dengan cara-cara sebelumnya, cara ini memperbolehkan kita untuk menyebutkan

alert( `I'm the Walrus!` ); // I'm the Walrus!
0 alih-alih posisi akhir dari string:

let guestList = "Guests: // Error: Unexpected token ILLEGAL
  * John";
3

Parameter pertama mungkin bernilai negatif, untuk menghitung dari akhir string:

let guestList = "Guests: // Error: Unexpected token ILLEGAL
  * John";
4

Mari kita review cara-cara tersebut untuk menghindari kebingungan:

methodmengambil…negatives
function sum(a, b) {
  return a + b;
}

alert(`1 + 2 = ${sum(1, 2)}.`); // 1 + 2 = 3.
52dari
function sum(a, b) {
  return a + b;
}

alert(`1 + 2 = ${sum(1, 2)}.`); // 1 + 2 = 3.
36 sampai
function sum(a, b) {
  return a + b;
}

alert(`1 + 2 = ${sum(1, 2)}.`); // 1 + 2 = 3.
37 (tidak termasuk
function sum(a, b) {
  return a + b;
}

alert(`1 + 2 = ${sum(1, 2)}.`); // 1 + 2 = 3.
37)nilai negatif diperbolehkan
function sum(a, b) {
  return a + b;
}

alert(`1 + 2 = ${sum(1, 2)}.`); // 1 + 2 = 3.
56antara
function sum(a, b) {
  return a + b;
}

alert(`1 + 2 = ${sum(1, 2)}.`); // 1 + 2 = 3.
36 dan
function sum(a, b) {
  return a + b;
}

alert(`1 + 2 = ${sum(1, 2)}.`); // 1 + 2 = 3.
37nilai negatif berarti mean
function sum(a, b) {
  return a + b;
}

alert(`1 + 2 = ${sum(1, 2)}.`); // 1 + 2 = 3.
07
function sum(a, b) {
  return a + b;
}

alert(`1 + 2 = ${sum(1, 2)}.`); // 1 + 2 = 3.
60dari
function sum(a, b) {
  return a + b;
}

alert(`1 + 2 = ${sum(1, 2)}.`); // 1 + 2 = 3.
36 ambil
alert( `I'm the Walrus!` ); // I'm the Walrus!
0 karakter
function sum(a, b) {
  return a + b;
}

alert(`1 + 2 = ${sum(1, 2)}.`); // 1 + 2 = 3.
36 negatif diperbolehkan

Cara mana yang harus kita gunakan?

Semuanya dapat melakukan pekerjaannya. Secara formal,

alert( `The backslash: \\` ); // The backslash: \
5 memiliki kekurangan: fungsi ini tidak tercantum di spesifikasi inti Javascript, tetapi di Annex B, yang mencakup hanya fitur browser yang ada karena alasan historis. Jadi, environment non-browser mungkin gagal untuk mendukungnya. Tetapi dalam praktik fungsi ini bekerja di mana saja.

Dibandingkan dengan dua varian yang lain,

function sum(a, b) {
  return a + b;
}

alert(`1 + 2 = ${sum(1, 2)}.`); // 1 + 2 = 3.
34 lebih fleksibel, karena memperbolehkan parameter negatif dan lebih pendek untuk ditulis. Jadi, dari ketiga cara sudah cukup untuk mengingat
function sum(a, b) {
  return a + b;
}

alert(`1 + 2 = ${sum(1, 2)}.`); // 1 + 2 = 3.
34.

Seperti yang kita tahu dari bab Perbandingan, string dibandingkan karakter per karakter dengan urutan alfabet.

Akan tetapi, ada beberapa pengecualian.

  1. Huruf kecil selalu lebih besar dibanding huruf kapital:

    let guestList = "Guests: // Error: Unexpected token ILLEGAL
      * John";
    5

  2. Karakter dengan tanda diakritik “tidak sesuai urutan”:

    let guestList = "Guests: // Error: Unexpected token ILLEGAL
      * John";
    6

    Hal ini dapat menyebabkan hasil yang aneh apabila kita mengurutkan nama-nama negara. Biasanya orang mengharapkan

    function sum(a, b) {
      return a + b;
    }
    
    alert(`1 + 2 = ${sum(1, 2)}.`); // 1 + 2 = 3.
    67 muncul setelah
    function sum(a, b) {
      return a + b;
    }
    
    alert(`1 + 2 = ${sum(1, 2)}.`); // 1 + 2 = 3.
    68 di daftar.

Untuk memahami apa yang terjadi, mari kita review representasi internal string di Javascript.

Semua string menggunakan encoding UTF-16. Yaitu: setiap karakter memiliki masing-masing kode numerik. Ada method spesial yang memperbolehkan kita untuk mengambil karakter dari kode dan sebaliknya.

function sum(a, b) {
  return a + b;
}

alert(`1 + 2 = ${sum(1, 2)}.`); // 1 + 2 = 3.
69

Mengembalikan kode untuk karakter pada posisi

alert( `I'm the Walrus!` ); // I'm the Walrus!
7:

let guestList = "Guests: // Error: Unexpected token ILLEGAL
  * John";
7

function sum(a, b) {
  return a + b;
}

alert(`1 + 2 = ${sum(1, 2)}.`); // 1 + 2 = 3.
71

Membuat sebuah karakter berdasarkan

function sum(a, b) {
  return a + b;
}

alert(`1 + 2 = ${sum(1, 2)}.`); // 1 + 2 = 3.
72 numeriknya

let guestList = "Guests: // Error: Unexpected token ILLEGAL
  * John";
8

Kita juga dapat membuat karakter unicode dengan kode mereka menggunakan

function sum(a, b) {
  return a + b;
}

alert(`1 + 2 = ${sum(1, 2)}.`); // 1 + 2 = 3.
73 yang diikuti oleh kode heksadesimal:

let guestList = "Guests: // Error: Unexpected token ILLEGAL
  * John";
9

Sekarang mari kita lihat karakter dengan kode di antara

function sum(a, b) {
  return a + b;
}

alert(`1 + 2 = ${sum(1, 2)}.`); // 1 + 2 = 3.
74 (alfabet latin dan sedikit tambahan) dengan membuat string yang terdiri dari mereka:

let guestList = "Guests:\n * John\n * Pete\n * Mary";

alert(guestList); // list tamu yang dipisahkan per baris
0

Kan? Huruf kapital muncul pertama, lalu beberapa karakter spesial, lalu huruf kecil, dan

function sum(a, b) {
  return a + b;
}

alert(`1 + 2 = ${sum(1, 2)}.`); // 1 + 2 = 3.
75 berada di dekat akhir string.

Sekarang terlihat jelas kenapa

function sum(a, b) {
  return a + b;
}

alert(`1 + 2 = ${sum(1, 2)}.`); // 1 + 2 = 3.
76.

Karakter-karakter dibandingkan berdasarkan kode numeriknya. Kode yang lebih besar berarti karakter tersebut lebih besar. Kode untuk

function sum(a, b) {
  return a + b;
}

alert(`1 + 2 = ${sum(1, 2)}.`); // 1 + 2 = 3.
77 (97) lebih besar dibandingkan dengan kode untuk
function sum(a, b) {
  return a + b;
}

alert(`1 + 2 = ${sum(1, 2)}.`); // 1 + 2 = 3.
78 (90).

  • Semua huruf kecil muncul setelah huruf kapital karena kode mereka lebih besar.
  • Beberapa karakter seperti
    function sum(a, b) {
      return a + b;
    }
    
    alert(`1 + 2 = ${sum(1, 2)}.`); // 1 + 2 = 3.
    75 terpisah dari alfabet utama. Disini, kodenya lebih besar dibandingkan semua karakter dari
    function sum(a, b) {
      return a + b;
    }
    
    alert(`1 + 2 = ${sum(1, 2)}.`); // 1 + 2 = 3.
    77 to
    function sum(a, b) {
      return a + b;
    }
    
    alert(`1 + 2 = ${sum(1, 2)}.`); // 1 + 2 = 3.
    81.

Algoritma yang “benar” untuk melakukan perbandingan string lebih kompleks dari kelihatannya, setiap bahasa memiliki alfabet mereka masing-masing.

Jadi, browser harus tahu bahasa yang digunakan untuk perbandingan.

Beruntungnya, semua browser modern (IE10- memerlukan library tambahan Intl.JS) mendukung standar internasionalisasi ECMA 402.

Hal tersebut menyediakan cara spesial untuk membandingkan stringi di berbeda bahasa, mengikuti peraturan mereka.

Method str.localeCompare(str2) mengembalikan sebuah interger yang menandakan apakah

alert( `The backslash: \\` ); // The backslash: \
4 lebih kecil, sama dengan atau lebih besar dari
function sum(a, b) {
  return a + b;
}

alert(`1 + 2 = ${sum(1, 2)}.`); // 1 + 2 = 3.
83 menurut peraturan-peraturan bahasa:

  • Mengembalikan nilai negatif jika
    alert( `The backslash: \\` ); // The backslash: \
    4 lebih kecil dibandingkan
    function sum(a, b) {
      return a + b;
    }
    
    alert(`1 + 2 = ${sum(1, 2)}.`); // 1 + 2 = 3.
    83
  • Mengembalikan nilai positif jika
    alert( `The backslash: \\` ); // The backslash: \
    4 lebih besar dibandingkan
    function sum(a, b) {
      return a + b;
    }
    
    alert(`1 + 2 = ${sum(1, 2)}.`); // 1 + 2 = 3.
    83
  • Mengembalikan
    function sum(a, b) {
      return a + b;
    }
    
    alert(`1 + 2 = ${sum(1, 2)}.`); // 1 + 2 = 3.
    07 apabila mereka sama.

Seperti contoh:

let guestList = "Guests:\n * John\n * Pete\n * Mary";

alert(guestList); // list tamu yang dipisahkan per baris
1

Method ini sebenarnya menerima 2 argumen tambahan yang disebutkan di dokumentasi, yang memperbolehkan untuk menyebutkan bahasa (yang biasanya diambil dari environment, urutan huruf bergantung dari bahasa) dan menyebutkan peraturan-peraturan tambahan seperti case sensitivity atau apakah

function sum(a, b) {
  return a + b;
}

alert(`1 + 2 = ${sum(1, 2)}.`); // 1 + 2 = 3.
89 and
function sum(a, b) {
  return a + b;
}

alert(`1 + 2 = ${sum(1, 2)}.`); // 1 + 2 = 3.
90 dianggap sama dan seterusnya.

Pengetahuan lanjutan

Bagian ini membahas lebih dalam tentang bagian internal string. Pengetahuan ini akan berguna apabila Anda akan berurusan dengan emoji, simbol matematika, hieroglif, atau simbol-simbol lain yang langka.

Anda dapat melewati bagian ini jika tidak berurusan dengan mereka.

Semua karakter yang sering digunakan memiliki kode 2-byte. Huruf di kebanyakan negara eropa, angka, dan bahkan kebanyakan hieroglif, memiliki representasi 2-byte.

Tetapi 2 byte hanya memperbolehkan 65536 kombinasi dan itu tidak cukup untuk semua kombinasi simbol. Jadi simbol-simbol yang langka menggunakan encoding dengan sepasang karakter 2-byte yang disebut “surrogate pair”.

Panjang dari simbol tersebut adalah

function sum(a, b) {
  return a + b;
}

alert(`1 + 2 = ${sum(1, 2)}.`); // 1 + 2 = 3.
01:

let guestList = "Guests:\n * John\n * Pete\n * Mary";

alert(guestList); // list tamu yang dipisahkan per baris
2

Perlu diingat bahwa surrogate pair tidak ada pada saat Javascript dibuat, oleh karena itu fitur ini tidak diproses secara benar oleh bahasa ini!

Kita sebenarnya memiliki sebuah simbol di setiap string di atas, tetapi

alert( `I'm the Walrus!` ); // I'm the Walrus!
0 menunjukkan panjang
function sum(a, b) {
  return a + b;
}

alert(`1 + 2 = ${sum(1, 2)}.`); // 1 + 2 = 3.
01.

function sum(a, b) {
  return a + b;
}

alert(`1 + 2 = ${sum(1, 2)}.`); // 1 + 2 = 3.
94 dan
function sum(a, b) {
  return a + b;
}

alert(`1 + 2 = ${sum(1, 2)}.`); // 1 + 2 = 3.
95 adalah beberapa method yang menangani surrogate pair dengan benar. Belum lama ini mereka muncul di bahasa ini. Sebelum mereka, hanya ada String.fromCharCode dan str.charCodeAt. Method-method tersebut sebenarnya sama saja dengan
function sum(a, b) {
  return a + b;
}

alert(`1 + 2 = ${sum(1, 2)}.`); // 1 + 2 = 3.
96, tetapi tidak bisa digunakan untuk surrogate pair.

Mengambil sebuah simbol terkadang agak susah, karena surrogate pair diperlakukan sebagai dua karakter:

let guestList = "Guests:\n * John\n * Pete\n * Mary";

alert(guestList); // list tamu yang dipisahkan per baris
3

Perlu diingat bahwa bagian dari surrogate pair tidak memiliki arti tanpa pasangan yang lain. Jadi contoh di atas menampilkan karakter aneh.

Secara teknis, surrogate pair juga dapat dideteksi berdasarkan kode mereka, jika sebuah karakter memiliki kode di antara

function sum(a, b) {
  return a + b;
}

alert(`1 + 2 = ${sum(1, 2)}.`); // 1 + 2 = 3.
97, maka karakter ini adalah bagian pertama dari surrogate pair. Karakter selanjutnya (bagian kedua) harus berada di antara
function sum(a, b) {
  return a + b;
}

alert(`1 + 2 = ${sum(1, 2)}.`); // 1 + 2 = 3.
98. Interval ini sudah dipesan secara khusus untuk surrogate pair oleh standar.

Pada kasus diatas:

let guestList = "Guests:\n * John\n * Pete\n * Mary";

alert(guestList); // list tamu yang dipisahkan per baris
4

Anda akan menemukan cara lain untuk bertanganan dengan surrogate pair nanti di bab Iterables / Bisa di iterasi. Mungkin juga ada library-library yang untuk hal tersebut, tetapi tidak ada yang cukup terkenal untuk disarankan di sini.

Di banyak bahasa terdapat simbol-simbol yang terdiri dari huruf dasar dengan tanda di atas/bawahnya.

Sebagai contoh, karakter

function sum(a, b) {
  return a + b;
}

alert(`1 + 2 = ${sum(1, 2)}.`); // 1 + 2 = 3.
77 dapat menjadi huruf dasar untuk:
let guestList = `Guests:
 * John
 * Pete
 * Mary
`;

alert(guestList); // list tamu, dipisahkan per baris
00. Kebanyakan karakter “komposit” memiliki kode mereka sendiri di tabel UTF-16. Hal tersebut tidak selalu terjadi, karena terlalu banyak kemungkinan kombinasi.

Untuk mendukung komposisi yang fleksibel, UTF-16 memperbolehkan kita untuk menggunakan beberapa karakter unicode: sebuah huruf dasar yang diikuti oleh satu atau lebih karakter “tanda” yang “menghiasinya”.

Sebagai contoh, jika kita memiliki

let guestList = `Guests:
 * John
 * Pete
 * Mary
`;

alert(guestList); // list tamu, dipisahkan per baris
01 diikuti dengan karakter spesial “titik di atas” (kode
let guestList = `Guests:
 * John
 * Pete
 * Mary
`;

alert(guestList); // list tamu, dipisahkan per baris
02), maka akan ditampilkan Ṡ.

let guestList = "Guests:\n * John\n * Pete\n * Mary";

alert(guestList); // list tamu yang dipisahkan per baris
5

Jika kita memerlukan tanda tambahan di atas huruf (atau di bawahnya) – tidak masalah, tambahkan saja karakter tanda yang diperlukan.

Sebagai contoh, jika kita tambahkan sebuah karakter “titik di bawah” (kode

let guestList = `Guests:
 * John
 * Pete
 * Mary
`;

alert(guestList); // list tamu, dipisahkan per baris
03), maka kita akan mendapatkan “S dengan titik di atas dan di bawah”:
let guestList = `Guests:
 * John
 * Pete
 * Mary
`;

alert(guestList); // list tamu, dipisahkan per baris
04.

Sebagai contoh:

let guestList = "Guests:\n * John\n * Pete\n * Mary";

alert(guestList); // list tamu yang dipisahkan per baris
6

Hal tersebut memberikan banyak fleksibilitas, tetapi juga masalah yang menarik: dua karakter mungkin terlihat sama, tetapi dapat direpresentasikan dengan komposisi unicode yang berbeda.

Sebagai contoh:

let guestList = "Guests:\n * John\n * Pete\n * Mary";

alert(guestList); // list tamu yang dipisahkan per baris
7

Untuk menyelesaikan masalah ini, terdapat sebuah algoritma “normalisasi unicode” yang membuat setiap string menjadi satu bentuk “normal”.

Algoritma tersebut diimplementasikan oleh str.normalize().

let guestList = "Guests:\n * John\n * Pete\n * Mary";

alert(guestList); // list tamu yang dipisahkan per baris
8

Agak lucu bahwa di situasi kita

let guestList = `Guests:
 * John
 * Pete
 * Mary
`;

alert(guestList); // list tamu, dipisahkan per baris
05 menjadikan sekumpulan karakter dengan panjang 3 menjadi satu:
let guestList = `Guests:
 * John
 * Pete
 * Mary
`;

alert(guestList); // list tamu, dipisahkan per baris
06 (S dengan dua titik).

let guestList = "Guests:\n * John\n * Pete\n * Mary";

alert(guestList); // list tamu yang dipisahkan per baris
9

Pada kenyataan, hal ini tidak selalu berlaku. Contoh diatas berlaku karena simbol

let guestList = `Guests:
 * John
 * Pete
 * Mary
`;

alert(guestList); // list tamu, dipisahkan per baris
07 is “cukup sering digunakan”, jadi pembuat UTF-16 memasukkannya di tabel utama dan memberinya sebuah kode.

Jika Anda ingin belajar lebih lanjut tentang aturan normalisasi dan variasinya – mereka dideskripsikan di appendix Unicode standard: Unicode Normalization Forms, tetapi untuk kebanyakan kasus informasi yang terdapat di bagian ini sudah cukup.

  • Terdapat 3 jenis tanda petik. Backtick membolehkan string memiliki baris ganda dan menyisipkan expresi
    let str1 = "Hello\nWorld"; // dua baris menggunakan "simbol baris baru"
    
    // dua baris menggunakan backtick
    let str2 = `Hello
    World`;
    
    alert(str1 == str2); // true
    0.
  • String di Javascript diencode menggunakan UTF-16.
  • Kita bisa memakai karakter seperti
    let str1 = "Hello\nWorld"; // dua baris menggunakan "simbol baris baru"
    
    // dua baris menggunakan backtick
    let str2 = `Hello
    World`;
    
    alert(str1 == str2); // true
    3 dan memasukkan karakter berdasarkan unicode mereka menggunakan
    let guestList = `Guests:
     * John
     * Pete
     * Mary
    `;
    
    alert(guestList); // list tamu, dipisahkan per baris
    10.
  • Untuk mendapatkan karakter, gunakan:
    alert( `The backslash: \\` ); // The backslash: \
    0.
  • Untuk mendapatkan substring, gunakan:
    function sum(a, b) {
      return a + b;
    }
    
    alert(`1 + 2 = ${sum(1, 2)}.`); // 1 + 2 = 3.
    34 atau
    function sum(a, b) {
      return a + b;
    }
    
    alert(`1 + 2 = ${sum(1, 2)}.`); // 1 + 2 = 3.
    32.
  • Untuk mengubah case kecil/besar dari string, gunakan:
    let guestList = `Guests:
     * John
     * Pete
     * Mary
    `;
    
    alert(guestList); // list tamu, dipisahkan per baris
    14.
  • Untuk mencari substring, gunakan:
    function sum(a, b) {
      return a + b;
    }
    
    alert(`1 + 2 = ${sum(1, 2)}.`); // 1 + 2 = 3.
    02, atau
    let guestList = `Guests:
     * John
     * Pete
     * Mary
    `;
    
    alert(guestList); // list tamu, dipisahkan per baris
    16 untuk pengecekan sederhana.
  • Untuk membandingkan string mengikuti bahasa, gunakan
    let guestList = `Guests:
     * John
     * Pete
     * Mary
    `;
    
    alert(guestList); // list tamu, dipisahkan per baris
    17, jika tidak mereka akan dibandingkan berdasarkan kode karakter.

Ada beberapa metode string lain yang berguna:

  • let guestList = `Guests:
     * John
     * Pete
     * Mary
    `;
    
    alert(guestList); // list tamu, dipisahkan per baris
    18 – menghilangkan (“memotong”) spasi dari awal dan akhir dari sebuah string.
  • let guestList = `Guests:
     * John
     * Pete
     * Mary
    `;
    
    alert(guestList); // list tamu, dipisahkan per baris
    19 – mengulang string sebanyak
    function sum(a, b) {
      return a + b;
    }
    
    alert(`1 + 2 = ${sum(1, 2)}.`); // 1 + 2 = 3.
    17 kali.
  • …dan masih banyak lagi yang dapat ditemukan di dalam manual.

String juga memiliki method-method untuk mencari/mengganti dengan ekspresi reguler (regular expression). Tetapi itu adalah topik yang luas, jadi topik ini dibahas di bagiannya sendiri Regular expressions.

Bagaimana cara yang benar untuk menggunakan file JavaScript di HTML?

Anda bisa langsung menambahkan JavaScript di HTML dengan menggunakan tag <script></script> yang mencakup semua kode JS yang Anda tulis. Kode JS yang bisa ditambahkan: di antara tag <head> di antara <body>

Apa itu string dalam JavaScript?

String adalah data yang berisi deretan karakter yang digunakan untuk merepresentasikansebuah teks. String diawali dan diakhiri dengan tanda kutip ganda atau kutip tunggal.

Bagaimana cara menjalankan JavaScript Coba Anda jelaskan?

Mengaktifkan JavaScript di browser Anda.
Buka Chrome di komputer Anda..
Klik. Setelan..
Klik Keamanan dan Privasi..
Klik Setelan situs..
Klik JavaScript..
Pilih Situs dapat menggunakan JavaScript..

JavaScript pakai aplikasi apa?

Namun, sebelumnya Anda membutuhkan beberapa aplikasi berikut untuk mendukung Anda belajar Javascript: Web browser (Google Chrome, Firefox, atau lainnya). Teks editor (Atom, Notepad, atau lainnya). Web server, untuk menjalankan kode pemrograman.