Kurzusok
/
Ruby
Ruby
/
Feladatok
/
Naplósor-elemző
Naplósor-elemző

Naplósor-elemző

Tanulófeladat

Bevezetés

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.

String létrehozása

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.

A stringek kezelése

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"

Utasítások

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:

  • INFO
  • WARNING
  • ERROR

Há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.

1. Üzenet kinyerése egy naplósorból

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"

2. Naplózási szint kinyerése egy naplósorból

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"

3. Naplósor újraformázása

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)"
Szerkesztés GitHubon A hivatkozás új ablakban vagy lapon nyílik meg
Ruby Exercism

Készen állsz elkezdeni a(z) Naplósor-elemző feladatot?

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.