Elixir - String
String di Elixir disisipkan di antara tanda kutip ganda, dan dienkode dalam UTF-8. Tidak seperti C dan C ++ di mana string default dikodekan ASCII dan hanya 256 karakter berbeda yang dimungkinkan, UTF-8 terdiri dari 1.112.064 titik kode. Ini berarti pengkodean UTF-8 terdiri dari banyak karakter yang mungkin berbeda. Karena string menggunakan utf-8, kita juga dapat menggunakan simbol seperti: ö, ł, dll.
Buat String
Untuk membuat variabel string, cukup tetapkan string ke variabel -
str = "Hello world"
Untuk mencetak ini ke konsol Anda, cukup panggil IO.puts fungsi dan berikan variabel str -
str = str = "Hello world"
IO.puts(str)
Program di atas menghasilkan hasil sebagai berikut -
Hello World
String Kosong
Anda dapat membuat string kosong menggunakan string literal, "". Sebagai contoh,
a = ""
if String.length(a) === 0 do
IO.puts("a is an empty string")
end
Program di atas menghasilkan hasil sebagai berikut.
a is an empty string
Interpolasi String
Interpolasi string adalah cara untuk membuat nilai String baru dari campuran konstanta, variabel, literal, dan ekspresi dengan memasukkan nilainya di dalam literal string. Elixir mendukung interpolasi string, untuk menggunakan variabel dalam string, saat menulisnya, bungkus dengan tanda kurung kurawal dan tambahkan tanda kurung kurawal dengan tanda'#' tanda.
Sebagai contoh,
x = "Apocalypse"
y = "X-men #{x}"
IO.puts(y)
Ini akan mengambil nilai x dan menggantikannya dengan y. Kode di atas akan menghasilkan hasil sebagai berikut -
X-men Apocalypse
Penggabungan String
Kami telah melihat penggunaan penggabungan String di bab-bab sebelumnya. Operator '<>' digunakan untuk menggabungkan string di Elixir. Untuk menggabungkan 2 string,
x = "Dark"
y = "Knight"
z = x <> " " <> y
IO.puts(z)
Kode di atas menghasilkan hasil sebagai berikut -
Dark Knight
Panjang String
Untuk mendapatkan panjang string, kami menggunakan String.lengthfungsi. Lewatkan string sebagai parameter dan itu akan menunjukkan ukurannya. Sebagai contoh,
IO.puts(String.length("Hello"))
Saat menjalankan program di atas, ini menghasilkan hasil sebagai berikut -
5
Membalikkan String
Untuk membalikkan string, teruskan ke fungsi String.reverse. Sebagai contoh,
IO.puts(String.reverse("Elixir"))
Program di atas menghasilkan hasil sebagai berikut -
rixilE
Perbandingan String
Untuk membandingkan 2 string, kita dapat menggunakan operator == atau ===. Sebagai contoh,
var_1 = "Hello world"
var_2 = "Hello Elixir"
if var_1 === var_2 do
IO.puts("#{var_1} and #{var_2} are the same")
else
IO.puts("#{var_1} and #{var_2} are not the same")
end
Program di atas menghasilkan hasil sebagai berikut -
Hello world and Hello elixir are not the same.
Pencocokan String
Kita telah melihat penggunaan operator pencocokan string = ~. Untuk memeriksa apakah suatu string cocok dengan regex, kita juga dapat menggunakan operator pencocokan string atau String.match? fungsi. Sebagai contoh,
IO.puts(String.match?("foo", ~r/foo/))
IO.puts(String.match?("bar", ~r/foo/))
Program di atas menghasilkan hasil sebagai berikut -
true
false
Hal yang sama juga dapat dicapai dengan menggunakan operator = ~. Sebagai contoh,
IO.puts("foo" =~ ~r/foo/)
Program di atas menghasilkan hasil sebagai berikut -
true
Fungsi String
Elixir mendukung sejumlah besar fungsi yang terkait dengan string, beberapa yang paling sering digunakan tercantum dalam tabel berikut.
Sr.No. | Fungsi dan Tujuannya |
---|---|
1 | at(string, position) Mengembalikan grafik pada posisi string utf8 yang ditentukan. Jika posisi lebih besar dari panjang string, maka ia mengembalikan nihil |
2 | capitalize(string) Mengonversi karakter pertama dalam string yang diberikan menjadi huruf besar dan sisanya menjadi huruf kecil |
3 | contains?(string, contents) Memeriksa apakah string berisi salah satu konten yang diberikan |
4 | downcase(string) Mengonversi semua karakter dalam string yang diberikan menjadi huruf kecil |
5 | ends_with?(string, suffixes) Mengembalikan nilai benar jika string diakhiri dengan salah satu sufiks yang diberikan |
6 | first(string) Mengembalikan grafem pertama dari string utf8, nihil jika string kosong |
7 | last(string) Mengembalikan grafem terakhir dari string utf8, nihil jika string kosong |
8 | replace(subject, pattern, replacement, options \\ []) Mengembalikan string baru yang dibuat dengan mengganti kemunculan pola dalam subjek dengan penggantian |
9 | slice(string, start, len) Mengembalikan substring mulai dari awal offset, dan panjang len |
10 | split(string) Membagi string menjadi substring di setiap kejadian spasi kosong Unicode dengan spasi kosong di depan dan di belakangnya diabaikan. Grup spasi putih diperlakukan sebagai kejadian tunggal. Pembagian tidak terjadi pada spasi non-breaking |
11 | upcase(string) Mengonversi semua karakter dalam string yang diberikan menjadi huruf besar |
Binari
Biner hanyalah urutan byte. Biner didefinisikan menggunakan<< >>. Sebagai contoh:
<< 0, 1, 2, 3 >>
Tentu saja, byte tersebut dapat diatur dengan cara apa pun, bahkan dalam urutan yang tidak menjadikannya string yang valid. Sebagai contoh,
<< 239, 191, 191 >>
String juga merupakan binari. Dan operator penggabungan string<> sebenarnya adalah operator penggabungan biner:
IO.puts(<< 0, 1 >> <> << 2, 3 >>)
Kode di atas menghasilkan hasil sebagai berikut -
<< 0, 1, 2, 3 >>
Perhatikan karakter ł. Karena ini dikodekan utf-8, representasi karakter ini membutuhkan 2 byte.
Karena setiap angka yang direpresentasikan dalam biner dimaksudkan sebagai byte, ketika nilai ini naik dari 255, itu dipotong. Untuk mencegah hal ini, kami menggunakan pengubah ukuran untuk menentukan berapa banyak bit yang kami inginkan untuk diambil nomor tersebut. Misalnya -
IO.puts(<< 256 >>) # truncated, it'll print << 0 >>
IO.puts(<< 256 :: size(16) >>) #Takes 16 bits/2 bytes, will print << 1, 0 >>
Program di atas akan menghasilkan hasil sebagai berikut -
<< 0 >>
<< 1, 0 >>
Kita juga dapat menggunakan pengubah utf8, jika karakter adalah titik kode, maka akan diproduksi di output; kalau tidak byte -
IO.puts(<< 256 :: utf8 >>)
Program di atas menghasilkan hasil sebagai berikut -
Ā
Kami juga memiliki fungsi yang disebut is_binaryyang memeriksa apakah variabel yang diberikan adalah biner. Perhatikan bahwa hanya variabel yang disimpan sebagai kelipatan 8 bit yang merupakan biner.
Bitstring
Jika kita mendefinisikan biner menggunakan pengubah ukuran dan memberikan nilai yang bukan kelipatan 8, kita akan berakhir dengan bitstring, bukan biner. Sebagai contoh,
bs = << 1 :: size(1) >>
IO.puts(bs)
IO.puts(is_binary(bs))
IO.puts(is_bitstring(bs))
Program di atas menghasilkan hasil sebagai berikut -
<< 1::size(1) >>
false
true
Artinya variabel itu bsbukan biner melainkan bitstring. Kita juga dapat mengatakan bahwa biner adalah bitstring di mana jumlah bitnya habis dibagi 8. Pencocokan pola bekerja pada biner serta bitstring dengan cara yang sama.