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.