IP'ler

*Bu içerik, yapay zekâ (beta) kullanılarak çevrildi ve hatalar içerebilir. Sayfayı İngilizce görüntülemek için buraya tıkla.

string veri türü, harfler, sayılar ve semboller gibi karakterlerin bir dizi olarak ifade edilmesidir. Bu, çoğu metin tabanlı bilginin depolanması için veri türüdür.

Kaynakları Deklarasyon

Bir yol değiştiriciyi ilan etmek için, karakterlerin etrafına virgüller yazın. Çift virgüller kullanmak daha yaygındır ("), ancak tek virgüller kullanmak da mümkündür. Eğer yolunuzda bir virgül veya kaçır virgül kullanmak istiyorsanız, yolunuzu diğer türdeki bir virgül veya kaçır vir


local string1 = "Hello world!"
print(string1) --> Merhaba dünya!
local string2 = 'Hello "world"!'
print(string2) --> Hello "world"!

Çift tırnakları kullanarak tek ve çift sözcükleri bir yüzeyde dahil etmek veya çok satır sözcükleri oluşturmak için aşağıdaki kutucukları kullanın:


local string1 = [[Hello
world!
Hello "world"!
Hello 'world'!]]
print(string1)
--> Merhaba
--> dünya!
--> Merhaba "dünya"!
--> Hello 'world'!

Gerekirse, aynı işaretlerin her başlangıç ve bitiş kutusunda aynı sayıda katlanabilir küreler kullanarak bir dizi içine katlayabilirsiniz:


local string1 = [=[Hello
[[world!]]
]=]
print(string1)
--> Merhaba
--> [[world!]]

İpeleri Birleştirme

Kaynakları birleştirmek için, onları iki nokta ile birleştir onları. Concatenating kaynaklar arasında bir boşluk girmez, bu yüzden önceki/sonraki bir dizibaşlangıcında/sonunda boşluk(lar) gerekir veya kaynakların arasında bir boşluk girmezsiniz.


local hello = "Hello"
local helloWithSpace = "Hello "
local world = "world!"
local string1 = hello .. world
local string2 = helloWithSpace .. world
local string3 = hello .. " " .. world
print(string1) --> Helloworld!
print(string2) --> Merhaba dünya!
print(string3) --> Hello world!

Not: print() komutunun birden fazla argümanı vardır ve onları ile boşlukları birleştirir, böylece , yerine1>..1> çıktılarında alanları yazabilirsiniz.


local hello = "Hello"
local world = "world"
local exclamationMark = "!"
print(hello .. world .. exclamationMark) --> Helloworld!
print(hello, world .. exclamationMark) --> Merhaba dünya!
print(hello, world, exclamationMark) --> Hello world !

Konvektörleri Dönüştürme

Bir diziyi bir sayıya dönüştürmek için, tonumber() işlevini kullanın. Eğer stringin bir sayı temsiline sahip değilse, Global.LuaGlobals.tonumber()``nil ı döndürür.


local numericString = "123"
print(tonumber(numericString)) --> 123
local alphanumericString = "Hello123"
print(tonumber(alphanumericString)) --> nil

Kısa Yollarından Kaçma

Çift veya tek kutu sözcüklerinden kaçmak ve neredeyse her karakteri yerleştirmek için karakterin önünde bir boşluk ( \ ) koyun. Örneğin:

  • Tek bir alıntıyı tek alıntı dizibirleştirmek için, \' kullanın.
  • Çift따옴lı diziiçine çift따옴lı ır kullanın \" .

local string1 = 'Hello \'world\'!'
print(string1) --> Merhaba dünya!
local string2 = "Hello \"world\"!"
print(string2) --> Hello "world"!

Geri slash'ları takiben gelen bazı karakterler kaçmış karakterler değil, özel karakterler üretir:

  • Yeni bir satır kaydırmak için \n kullanın.
  • Yatay bir etiket gömek için \t kullanın.

local string1 = "Hello\nworld!"
print(string1)
--> Merhaba
--> dünya!
local string2 = "Hello\tworld!"
print(string2) --> Hello world!

Kısayol Çevirisi

Luau, string interpolation destekler, bir özellik sayesinde ifadeleri yuvarlaklar içine girmenizi sağlar. Arka çizgileri ( ` ) kullanarak bir yuvarlak içine ifadeler ekleyin ve düzen içinde kıvrımlı parçalara ekleyin:


local world = "world"
local string1 = `Hello {world}!`
print(string1) --> Hello world!

Değişkenler en yaygın kullanım olmasına rağmen, matematik dahil herhangi bir ifadeyi kullanabilirsiniz:


local world = "world"
local number = 1
local letters = {"w", "o", "r", "l", "d"}
local string1 = `Hello {world}, {number} time!`
local string2 = `Hello {world}, {number + 1} times!`
local string3 = `Hello {table.concat(letters)} a third time!`
print(string1) --> Merhaba dünya, 1 kez!
print(string2) --> Merhaba dünya, 2 kez!
print(string3) --> Hello world a third time!

Backticks, curly brackets ve backslashes için standart kaçış kuralları uygulanır:


local string1 = `Hello \`\{world\}\`!`
print(string1) --> Hello `{world}`!

Matematik Dönüşümü

Bir dizihesap etmek için bir yüzdeyi yüzde olarak yazarsanız, Luau yüzdesi otomatik olarak bir sayıya dönüştürür. Eğer yüzdeye bir sayı temsilinin olmadığını varsayarsanız, bir hata oluşur.


print("55" + 10) --> 65
print("55" - 10) --> 45
print("55" * 10) --> 550
print("55" / 10) --> 5.5
print("55" % 10) --> 5
print("Hello" + 10) --> print("Hello" + 10):1: attempt to perform arithmetic (add) on string and number

Karşılaştırmalar

Kıyaslama işlemi < , <= , > ve 2> >=2> işlemler


print("Apple" < "apple") --> doğru
print("Banana" < "apple") --> true (B ASCII'de önce bir)
print("number100" < "number20") --> true

IP Adresiyle İlişkili Kısayol

Bir strung pattern bir karakterin string.match() , string.gmatch() ve diğer işlevleri kullanarak bir parçayı, veya daha uzun bir dizibir kısmını bulmak için diğer işlevleri bulmak için bir kombinasyonudur.

Doğrudan Maçlar

Luau'nun bir işlevindeki doğrudan eşleştirmeyi kullanabilirsiniz, büyü karakterleri dışında. Örneğin, bu komutlar bir yuva içindeki string.match() kelimesini arar.


local match1 = string.match("Welcome to Roblox!", "Roblox")
local match2 = string.match("Welcome to my awesome game!", "Roblox")
print(match1) --> Roblox
print(match2) --> nil

Karakter Sınıfları

Karakter sınıfları daha gelişmiş yazı aramaları için kullanışlıdır. Onları kullanarak, özellikle karakter olmayan ama bilinen bir kategori (klas) içinde aranan bir şeyi arayabilirsiniz (örneğin harfler, sayılar, boşluklar, 2> boşluklama2>, ve daha fazlası).

Aşağıdaki tabloda, Luau yapıları için resmi karakter sınıfları gösterilmiştir:

Sınıfınızın temsilini yapar.Örnek Maçı yapar.Rakip Maçı yapar.
.Herhangi bir karakter32kasGJ1%fTlk?@94
%aBir üst veya alt harfaBcDeFgHiJkLmNoPqRsTuVwXyZ
%lBir düşük kasalı harfabcdefghijklmnopqrstuvwxyz
%uÜst kasa harfesiABCDEFGHIJKLMNOPQRSTUVWXYZ
%d)Herhangi bir sayı (number)0123456789.
%pHerhangi bir boşluk karakteri !@#;.<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br
%wBir alfanümerik karakter (ya bir harf veya bir sayı)aBcDeFgHiJkLmNoPqRsTuVwXyZ0123456789
%sBir boşluk veya beyazluk karakteri , \n ve \r
%cÖzel bir kontrol karakteri
%xHexadecimal karakter0123456789ABCDEF
%zNULL karakteri ( \0 )

Aşağıdaki karakterlerin sınıfları, %a ve %s gibi, eşdeğer üst kasalı harfli temsil eder. durum, %p bir boşluk karakterini temsil ederken, 1> %P1> tüm karakterleri boşluk olarak temsil eder.

Büyülü Karakterler

Modellerdeki 12 "büyülü karakter" özel amaçlar için kullanılır:

$%^: * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *())
.[)]+-?

Escape ve büyülü karakterleri aramak için % sembolünü kullanın. Örneğin, roblox.com aranıyor, önce . (nokta) sembolüyle önceki 1> %1> ile aranıyor.


-- roblox.com "roblox#com" eşleştirilir çünkü periyot "herhangi bir karakter" olarak yorumlanır
local match1 = string.match("What is roblox#com?", "roblox.com")
print(match1) --> roblox#com
-- % ile bölümü kaçırın, böylece bir harf birimi olarak okunur
local match2 = string.match("I love roblox.com!", "roblox%.com")
print(match2) --> roblox.com

Çivitler

^ ve $ sembollerini kullanarak bir şeritin başlangıcında veya sonunda bir patterne arayabilirsiniz.


local start1 = string.match("first second third", "^first") -- “İlk” başlığında olduğu için eşleştirme
print(start1) --> ilk
local start2 = string.match("third second first", "^first") -- “İlk” başlığının başlangıcında değil
print(start2) --> hiç
local end1 = string.match("first second third", "third$") -- “Üçüncü” adı sonunda eşleştir
print(end1) --> üçüncü
local end2 = string.match("third second first", "third$") -- Uymaz çünkü "üçüncü" bitirdeğil
print(end2) --> nil

Ayrıca, hem ^ hem de $ bir kombinasyon kullanarak, bir patronun sadece tüm yazıyı değil, sadece bir kısmını değiştirdiğinden emin olabilirsiniz.


-- Tüm bir senaryoda uyumlu olmak için hem ^ hem de $ kullanıyor
local match1 = string.match("Roblox", "^Roblox$") -- Roblox'un tüm senaryosu (eşitlik) olduğu için eşleştirmeyi kullanır
print(match1) --> Roblox
local match2 = string.match("I play Roblox", "^Roblox$") -- Roblox'un başlangıcı VE bitir"değil" olduğu için eşleştirilmiyor
print(match2) --> hiç
local match3 = string.match("I play Roblox", "Roblox") -- Roblox'un "I play Roblox" içinde bulunduğu için eşleştirme
print(match3) --> Roblox

Sınıf Modifikatörleri

Kendi başına, bir karakter sınıfı sadece bir karakteri bir karakteri bir yol boyunca eşleştirir. durum, aşağıdaki patter ( "%d" ) soldan sağa okuma başlar, ilk sayıyı bulur ve durur.


local match = string.match("The Cloud Kingdom has 25 power gems", "%d")
print(match) --> 2

sonuçkontrol etmek için herhangi bir karakter sınıfıyla modifikatörleri kullanabilirsiniz:

ÖlçücüAnlamı
+Önceki karakter sınıfından 1 veya daha fazla eşleştir
-Önceki karakter sınıfından olabildiğince az sayıda eşleştir
* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * *Önceki karakter sınıfından 0 veya daha fazla eşleştir
?Önceki karakter sınıfından 1 veya daha az eşleştir
%nFor n between 1 and 9 , match a substring equal to the 1> n1> th captured dizi.
%bxyDengeleme işaretlemesi x, y ve her şey arasındaki her şeyi eşleştirir (örneğin, %b() bir ebeveyn olarak iki eşleştirmeyi ve her şeyi eşleştirir)

Aynı patataya bir modifiyer eklemek ( "%d+" yerine "%d" çıktıları ile çıkar 25 yerine 1>21> :


local match1 = string.match("The Cloud Kingdom has 25 power gems", "%d")
print(match1) --> 2
local match2 = string.match("The Cloud Kingdom has 25 power gems", "%d+")
print(match2) --> 25

Klas Setleri

Setler tek bir karakter sınıfının tüm işi yapamadığında kullanılmalıdır. durum, aynı küçük harfleri ( %l ) ve boşluk karakterlerini ( 0> %p0> ) kullanarak tek bir patronda eşleştirmek isteyebilirsiniz.

Setler, onların etrafındaki boşluklar ile tanımlanır. Aşağıdaki örnekte, bir seti kullanmanın ( %) ve kullanmayan bir setin ( %) farkını fark edin.


local match1 = string.match("Hello!!! I am another string.", "[%l%p]+") -- Yükleme
print(match1) --> merhaba!!!
local match2 = string.match("Hello!!! I am another string.", "%l%p+") -- Set olmayan
print(match2) --> o!!!

İlk komut (ayarla), Luau'nun hem düşük hem de boşluk karakterlerini bulmasını söyler. Tüm ayarlasonra eklenen + ölçeğiyle, bu karakterlerin hepsini bulur (ello!!!), alanına ulaştığında durur.

İkinci komutta (set olmayan) + ile sayıcı sadece %p sınıfının önündeki klasse uygulanır, bu yüzden Luau serisinin önündeki ilk altırgen karakteri ( o ) yakalar.

Karakter sınıfları gibi, setlerin "tersleri" olabilir. Bu, ayarlaaçılışından doğrudan sonra açılış [ ile birlikte bir "[%p%s]+" karakteri ekleyerek yapılır. durum, 1>#p

Ayrıca, bir başlangıç ve son karakter arasındaki bir dizi maçı bulmanızı sağlayan menziller destekleri de vardır. Bu, Lua 5.1 Kılavuzu ile daha ayrıntılı olarak açıklanmış bir özelliktir.

ip captures

String captures sub-patternleri bir patrondaki alt modellerdir. Bunlar () ile kaplanmıştır ve aynı sub-string'leri almak ve kaydetmek için kullanılır. Örneğin, aşağıdaki patron iki captures'ı içerir, () ve (%a+), bu da başarılı


local pattern = "(%a+)%s?=%s?(%d+)"
local key1, val1 = string.match("TwentyOne = 21", pattern)
print(key1, val1) --> TwentyOne 21
local key2, val2 = string.match("TwoThousand= 2000", pattern)
print(key2, val2) --> İki Bin 2000
local key3, val3 = string.match("OneMillion=1000000", pattern)
print(key3, val3) --> OneMillion 1000000

Önceki patterndeki, ? kantitesi, her iki %s sınıfını da takip eden güvenli bir ekledir, çünkü alanın her iki tarafındaki alanın herhangi biri (veya her ikisi de) eşit işaret etkisiyle boş bırakılır. Bu, eşit işaret etkisi olmayan bir alanın etrafında herhangi

String captures can also be katlanabilir as the following example:


local places = "The Cloud Kingdom is heavenly, The Forest Kingdom is peaceful"
local pattern = "(The%s(%a+%sKingdom)[%w%s]+)"
for description, kingdom in string.gmatch(places, pattern) do
print(description)
print(kingdom)
end
--> Bulut Krallığı cennet gibi
--> Bulut Krallığı
--> Orman Krallığı barışçıldır
--> Forest Kingdom

Bu模a arama şu şekilde çalışır:

The string.gmatch() iterator aranır bir match on the entire "açıklama" pattern defined by the outer pair of parentheses. This stops at the first comma and captures the takip edilen:

#DesenYakala
1.(The%s:%a+%sKingdom][%w%s+)Bulut Krallığı cennet gibi

Başarılı ilk yakalayışını kullanarak, itici sonra "kraliyet" şemasının içinde belirlenen bir eşleşmeyi arar. Bu yuvarlama pateti sadece takip edilenyakalar:

#DesenYakala
2):%a+%sKingdom)Bulut Krallığı

Dizge sonra çıkar ve tüm diziboyunca aranır, takip edilenyakalar:

#DesenYakala
3(The%s:%a+%sKingdom][%w%s+)Orman Krallığı barışçıldır
4:%a+%sKingdom)Orman Krallığı

Yukarıdaki tüm ile ek olarak, boş bir yakalama ( () ) ile bir özel durum var. Eğer bir yakalama boşsa, strungaki pozisyon yakalanacaktır:


local match1 = "Where does the capture happen? Who knows!"
local match2 = "This string is longer than the first one. Where does the capture happen? Who knows?!"
local pattern = "()Where does the capture happen%? Who knows!()"
local start1, finish1 = string.match(match1, pattern)
print(start1, finish1) --> 1 42
local start2, finish2 = string.match(match2, pattern)
print(start2, finish2) --> 43 84

Bu özel yakalar normal yakalara göre katlanabilir:


local places = "The Cloud Kingdom is heavenly, The Forest Kingdom is peaceful."
local pattern = "The (%a+()) Kingdom is %a+"
for kingdom, position in string.gmatch(places, pattern) do
print(kingdom, position)
end
--> Bulut 10
--> Forest 42

Geri döndürilen değerler, sayılar olarak değil, ip olarak geri döndürülür:


local match = "This is an example"
local pattern = "This is an ()example"
local position = string.match(match, pattern)
print(typeof(position)) --> number