Ahogy a Rubyban minden, a String egy objektum.
A stringek tetszőleges bájtok sorozatából állnak (általában karakterekből), és ugyanúgy inicializálhatók és manipulálhatók, mint bármely más objektum.
Valójában a Ruby egyik leghasznosabb tulajdonsága a rengeteg metódus, amelyet stringeken (és más objektumokon) hívhatsz meg, hogy sok időt spórolj a kódírással.
Ebben a feladatban megismerkedünk néhány ilyen segédmetódussal, és játszunk is velük.
Bár használhatod a String.new(...)-ot string létrehozására, sokkal gyakoribb, hogy literált használsz.
Sokféle literál használható, és két kategóriába sorolhatók: amelyek engedik az interpolációt, és amelyek nem.
A leggyakoribb literálok a szimpla és dupla idézőjelek ('...' és "...").
A szimpla idézőjelek nem engedik az interpolációt, a dupla idézőjelek viszont igen.
Interpolációról akkor beszélünk, amikor az egyik string bekerül egy másikba a #{} szintaxis használatával.
# Use single quotes when not interpolated
location = 'World'
# And double quotes when interpolated
puts "Hello, #{location}!" #=> "Hello, World!"
Más literálokat is használhatsz, például a %{... }-t interpolált stringekhez és a %q{...}-t nem interpolált stringekhez.
Ezek akkor hasznosak, ha a stringjeidben szerepel a ' vagy a " karakter.
Megjegyzés: Nincs abszolút szabály arra, hogy nem interpolált stringeket kell használnod, ha a stringed nem tartalmaz interpolációt.
Hasznos, ha a Ruby stringjeire hasonlóképpen gondolsz, mint a tömbökre.
Van méretük, és a karaktereik indexeltek (a 0 az első index):
my_string = "Some string"
my_string.size #=> 11
my_string[0] #=> 'S'
my_string[1] #=> 'o'
my_string[-1] #=> 'g'
# Find the first index of a character
my_string.index('m') #=> 2
A stringek részei indexekkel vagy a slice metódussal nyerhetők ki:
my_string = "Some string"
# Find three characters starting with the second character (index 1)
my_string[1, 3] #=> "ome"
my_string.slice(1, 3) #=> "ome"
A stringek szemantikai értékei is manipulálhatók. Érdemes böngészned a Ruby-dokumentációt, hogy megismerd az összes metódust, de íme néhány gyakran használt példa:
"hello".capitalize #=> "Hello"
"HELLO".downcase #=> "hello"
"hello".center(9) #=> " hello "
" hello ".strip #=> "hello"
"hello world".split(" ") #=> ["hello", "world"]
Olyan metódusokat is használhatsz, mint a gsub, karakterek cseréjére:
# Replace one character with another
"noob".gsub("o","0") #=> "n00b"
# (Advanced) Replace a regular expression
"Ruby really rocks".gsub(/[aieou]/,'') #=> "Rby rlly rcks"
A fenti példák mindegyike egy új String-et ad vissza.
Ugyanakkor sok metódusnak van !-ra végződő megfelelője, amelyek magát a stringet módosítják.
# Use normal methods to return new strings
my_string = "hello"
my_string.capitalize #=> "Hello"
puts my_string #=> "hello"
# And bang-methods (...!) to modify the object
my_string = "hello"
my_string.capitalize! #=> "Hello"
puts my_string #=> "Hello"
Ebben a feladatban naplósorok feldolgozásával fogsz foglalkozni.
Minden naplósor egy string, amelynek formátuma a következő: "[<LEVEL>]: <MESSAGE>".
Három különböző naplózási szint van:
INFOWARNINGERRORHárom részfeladat vár rád; mindegyik egy naplósort kap, és valamit kell vele tenned. Sokféleképpen megoldhatod ezeket a részfeladatokat. Válaszd ki a kedvenc metódusaidat a fenti példákból, és nézd meg, mire jutsz.
Valósítsd meg a LogLineParser#message metódust, hogy visszaadja egy naplósor üzenetét:
LogLineParser.new('[ERROR]: Invalid operation').message
# => "Invalid operation"
A kezdő és záró whitespace-t el kell távolítani:
LogLineParser.new("[WARNING]: Disk almost full\r\n").message
# => "Disk almost full"
Valósítsd meg a LogLineParser#log_level metódust, hogy visszaadja egy naplósor naplózási szintjét, kisbetűvel:
LogLineParser.new('[ERROR]: Invalid operation').log_level
# => "error"
Valósítsd meg a LogLineParser#reformat metódust, amely újraformázza a naplósort: az üzenet kerüljön előre, utána pedig zárójelben a naplózási szint következzen:
LogLineParser.new('[INFO]: Operation completed').reformat
# => "Operation completed (info)"
Iratkozz fel az Exercism-re, hogy megtanuld és elsajátítsd a(z) Ruby nyelvet 21 fogalom121 feladat segítségével, valódi emberi mentorálással, mindez ingyen.