İksir - Teller
Elixir'deki dizeler çift tırnak arasına eklenir ve UTF-8 ile kodlanır. Varsayılan dizelerin ASCII olarak kodlandığı ve yalnızca 256 farklı karakterin mümkün olduğu C ve C ++ 'dan farklı olarak, UTF-8 1.112.064 kod noktasından oluşur. Bu, UTF-8 kodlamasının bu birçok farklı olası karakterden oluştuğu anlamına gelir. Dizeler utf-8 kullandığından ö, ł vb. Semboller de kullanabiliriz.
Bir Dize Oluşturun
Bir dizge değişkeni oluşturmak için, bir değişkene bir dizge atamanız yeterlidir -
str = "Hello world"
Bunu konsolunuza yazdırmak için, IO.puts fonksiyon ve ona str değişkenini iletin -
str = str = "Hello world"
IO.puts(str)
Yukarıdaki program aşağıdaki sonucu üretir -
Hello World
Boş Dizeler
Dize değişmezini kullanarak boş bir dize oluşturabilirsiniz, "". Örneğin,
a = ""
if String.length(a) === 0 do
IO.puts("a is an empty string")
end
Yukarıdaki program aşağıdaki sonucu verir.
a is an empty string
Dize Enterpolasyonu
Dize enterpolasyonu, değerlerini bir dize değişmezinin içine dahil ederek sabitlerin, değişkenlerin, değişmezlerin ve ifadelerin bir karışımından yeni bir String değeri oluşturmanın bir yoludur. Elixir, bir dizgede bir değişkeni yazarken kullanmak için dize enterpolasyonunu destekler, onu küme parantezleriyle sarın ve küme parantezlerinin başına bir'#' işaret.
Örneğin,
x = "Apocalypse"
y = "X-men #{x}"
IO.puts(y)
Bu, x'in değerini alacak ve onu y yerine koyacaktır. Yukarıdaki kod aşağıdaki sonucu oluşturacaktır -
X-men Apocalypse
Dize Birleştirme
Önceki bölümlerde String birleştirme kullanımını daha önce görmüştük. Elixir'deki dizeleri birleştirmek için '<>' operatörü kullanılır. 2 dizeyi birleştirmek için,
x = "Dark"
y = "Knight"
z = x <> " " <> y
IO.puts(z)
Yukarıdaki kod aşağıdaki sonucu üretir -
Dark Knight
IP uzunluğu
İpin uzunluğunu elde etmek için, String.lengthişlevi. Dizeyi bir parametre olarak iletin ve size boyutunu gösterecektir. Örneğin,
IO.puts(String.length("Hello"))
Yukarıdaki programı çalıştırırken, aşağıdaki sonucu verir -
5
Bir Dizeyi Ters Çevirme
Bir dizeyi ters çevirmek için onu String.reverse işlevine iletin. Örneğin,
IO.puts(String.reverse("Elixir"))
Yukarıdaki program aşağıdaki sonucu üretir -
rixilE
Dize Karşılaştırması
2 dizgiyi karşılaştırmak için == veya === operatörlerini kullanabiliriz. Örneğin,
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
Yukarıdaki program aşağıdaki sonucu üretir -
Hello world and Hello elixir are not the same.
Dize Eşleştirme
= ~ Dizge eşleştirme operatörünün kullanımını daha önce görmüştük. Bir dizenin bir normal ifadeyle eşleşip eşleşmediğini kontrol etmek için, dize eşleştirme operatörünü veya String.match? işlevi. Örneğin,
IO.puts(String.match?("foo", ~r/foo/))
IO.puts(String.match?("bar", ~r/foo/))
Yukarıdaki program aşağıdaki sonucu üretir -
true
false
Aynı şey = ~ operatörü kullanılarak da elde edilebilir. Örneğin,
IO.puts("foo" =~ ~r/foo/)
Yukarıdaki program aşağıdaki sonucu üretir -
true
String Fonksiyonları
Elixir, dizelerle ilgili çok sayıda işlevi destekler, en çok kullanılanlardan bazıları aşağıdaki tabloda listelenmiştir.
Sr.No. | İşlev ve Amacı |
---|---|
1 | at(string, position) Grapheme'yi verilen utf8 dizesinin konumunda döndürür. Konum dize uzunluğundan büyükse, sıfır döndürür |
2 | capitalize(string) Verilen dizedeki ilk karakteri büyük harfe ve kalanı küçük harfe dönüştürür |
3 | contains?(string, contents) Dizenin verilen içeriklerden herhangi birini içerip içermediğini kontrol eder |
4 | downcase(string) Verilen dizedeki tüm karakterleri küçük harfe dönüştürür |
5 | ends_with?(string, suffixes) Dize, verilen son eklerden herhangi biriyle biterse doğru döndürür |
6 | first(string) Bir utf8 dizesinden ilk grafemeyi döndürür, dize boşsa nil |
7 | last(string) Bir utf8 dizesinden son grafemeyi döndürür, dize boşsa nil |
8 | replace(subject, pattern, replacement, options \\ []) Konudaki desen oluşumlarını değiştirme ile değiştirerek oluşturulan yeni bir dize döndürür |
9 | slice(string, start, len) Göreli konum başlangıcında başlayan ve uzunluk uzunluğu olan bir alt dize döndürür |
10 | split(string) Bir dizeyi her Unicode boşluk oluşumunda alt dizelere böler ve baştaki ve sondaki boşluklar yoksayılır. Beyaz boşluk grupları, tek bir oluşum olarak kabul edilir. Bölünemez boşlukta bölünmeler oluşmaz |
11 | upcase(string) Verilen dizedeki tüm karakterleri büyük harfe dönüştürür |
İkili dosyalar
Bir ikili, sadece bir bayt dizisidir. İkili dosyalar kullanılarak tanımlanır<< >>. Örneğin:
<< 0, 1, 2, 3 >>
Elbette, bu baytlar, onları geçerli bir dizge yapmayan bir sırada bile herhangi bir şekilde organize edilebilir. Örneğin,
<< 239, 191, 191 >>
Dizeler aynı zamanda ikilidir. Ve dize birleştirme operatörü<> aslında bir İkili birleştirme operatörüdür:
IO.puts(<< 0, 1 >> <> << 2, 3 >>)
Yukarıdaki kod aşağıdaki sonucu üretir -
<< 0, 1, 2, 3 >>
Ł karakterine dikkat edin. Bu, utf-8 kodlu olduğundan, bu karakter temsili 2 bayt yer kaplar.
İkili dosyada gösterilen her sayının bir bayt olması amaçlandığından, bu değer 255'ten yükseldiğinde kesilir. Bunu önlemek için, bu sayının kaç bit almasını istediğimizi belirtmek için boyut değiştirici kullanıyoruz. Örneğin -
IO.puts(<< 256 >>) # truncated, it'll print << 0 >>
IO.puts(<< 256 :: size(16) >>) #Takes 16 bits/2 bytes, will print << 1, 0 >>
Yukarıdaki program aşağıdaki sonucu üretecektir -
<< 0 >>
<< 1, 0 >>
Ayrıca utf8 değiştiricisini de kullanabiliriz, eğer bir karakter kod noktası ise, çıktıda üretilecektir; başka baytlar -
IO.puts(<< 256 :: utf8 >>)
Yukarıdaki program aşağıdaki sonucu üretir -
Ā
Ayrıca adında bir fonksiyonumuz var is_binarybu, belirli bir değişkenin ikili olup olmadığını kontrol eder. Yalnızca 8 bitin katları olarak depolanan değişkenlerin ikili olduğunu unutmayın.
Bit dizeleri
Boyut değiştiriciyi kullanarak bir ikili tanımlar ve 8'in katı olmayan bir değer iletirsek, ikili yerine bir bit dizesi elde ederiz. Örneğin,
bs = << 1 :: size(1) >>
IO.puts(bs)
IO.puts(is_binary(bs))
IO.puts(is_bitstring(bs))
Yukarıdaki program aşağıdaki sonucu üretir -
<< 1::size(1) >>
false
true
Bu, değişkenin bsbir ikili değil, daha çok bir bit dizisidir. İkilinin, bit sayısının 8'e bölünebildiği bir bit dizisi olduğunu da söyleyebiliriz. Örüntü eşleştirme, ikili dosyalar üzerinde ve aynı şekilde bit dizgilerinde çalışır.