Rails Insights

Defnyddio'r Dull `gsub` yn Ruby ar gyfer Amnewid String

Mae Ruby yn iaith raglennu sy'n adnabyddus am ei symlrwydd a'i phŵer. Un o'r nodweddion mwyaf defnyddiol yn Ruby yw'r dull `gsub`, sy'n caniatáu i ddefnyddwyr amnewid testun yn hawdd. Yn yr erthygl hon, byddwn yn archwilio sut i ddefnyddio `gsub` ar gyfer amnewid string, gan gynnwys enghreifftiau cod a chymwysiadau ymarferol.

Beth yw `gsub`?

Mae `gsub` yn ddull sy'n cael ei ddefnyddio i amnewid pob achos o ddirprwy yn string. Mae'n cymryd dwy ddarn fel ei pharamedrau: y patrwm i'w chwilio amdano a'r testun i'w ddefnyddio fel dirprwy. Mae `gsub` yn gweithio ar stringiau, gan ei gwneud yn hawdd i newid cynnwys testun yn gyflym.

Sut i Ddefnyddio `gsub`

Mae defnyddio `gsub` yn syml. Dyma'r strwythur sylfaenol:

string.gsub(patrwm, dirprwy)

Mae'r patrwm yn gallu bod yn string neu yn regex (patrwm rheolaidd), a gall y dirprwy fod yn string neu'n fethdaliad. Gadewch i ni edrych ar rai enghreifftiau i ddeall yn well sut mae hyn yn gweithio.

Enghreifftiau o Ddefnyddio `gsub`

Enw Cwmni

Dyma enghraifft syml o ddefnyddio `gsub` i newid enw cwmni:

company_name = "Cwmni Tech"
new_name = company_name.gsub("Tech", "Gwybodaeth")
puts new_name

Yn yr enghraifft hon, bydd y cod yn argraffu "Cwmni Gwybodaeth". Mae `gsub` wedi newid "Tech" i "Gwybodaeth".

Amnewid Llinellau

Gallwch hefyd ddefnyddio `gsub` i amnewid llinellau yn string. Dyma enghraifft:

text = "Helo, byd!\nHelo, Ruby!"
new_text = text.gsub("Helo", "Shwmae")
puts new_text

Yn yr enghraifft hon, bydd y cod yn argraffu:

Shwmae, byd!
Shwmae, Ruby!

Defnyddio Regex gyda `gsub`

Mae `gsub` yn cefnogi regex, sy'n caniatáu i chi wneud amnewidiadau mwy cymhleth. Dyma enghraifft sy'n defnyddio regex i amnewid pob rhif yn string:

text_with_numbers = "Mae 2 gath a 3 ci."
new_text = text_with_numbers.gsub(/\d/, 'X')
puts new_text

Yn yr enghraifft hon, bydd y cod yn argraffu "Mae X gath a X ci." Mae'r regex /\d/ yn chwilio am unrhyw rif, ac mae `gsub` yn ei ddirprwyo gyda 'X'.

Amnewid Mwy na Un Patrwm

Gallwch ddefnyddio `gsub` i amnewid mwy na un patrwm ar yr un pryd. Dyma enghraifft:

text = "Mae'r haul yn disgleirio a'r awyr yn las."
new_text = text.gsub("haul", "seren").gsub("las", "gwyrdd")
puts new_text

Yn yr enghraifft hon, bydd y cod yn argraffu "Mae'r seren yn disgleirio a'r awyr yn wyrdd." Mae `gsub` wedi newid "haul" i "seren" a "las" i "gwyrdd".

Defnyddio `gsub!` ar gyfer Amnewid yn Lle

Mae `gsub!` yn fersiwn o `gsub` sy'n newid y string yn lle. Mae'n ddefnyddiol pan fyddwch am wneud newidiadau yn y string gwreiddiol. Dyma enghraifft:

text = "Helo, byd!"
text.gsub!("Helo", "Shwmae")
puts text

Yn yr enghraifft hon, bydd y cod yn argraffu "Shwmae, byd!" Mae `gsub!` wedi newid y string gwreiddiol yn lle creu copïau newydd.

Defnyddio `gsub` gyda Blokiau

Gallwch hefyd ddefnyddio `gsub` gyda blokiau i wneud amnewidiadau mwy cymhleth. Dyma enghraifft sy'n defnyddio blok i newid pob llythyren i fawr:

text = "cymraeg"
new_text = text.gsub(/[a-z]/) { |match| match.upcase }
puts new_text

Yn yr enghraifft hon, bydd y cod yn argraffu "CYMRAEG". Mae'r blok yn newid pob llythyren i fawr.

Defnyddio `gsub` ar gyfer Amnewid Cynnwys HTML

Gall `gsub` hefyd fod yn ddefnyddiol ar gyfer amnewid cynnwys HTML. Dyma enghraifft sy'n newid tagiau HTML:

html = "

Helo, byd!

" new_html = html.gsub("

", "

").gsub("

", "
") puts new_html

Yn yr enghraifft hon, bydd y cod yn argraffu "

Helo, byd!
". Mae `gsub` wedi newid y tagiau

i

.

Casgliad

Mae'r dull `gsub` yn Ruby yn offeryn pwerus ar gyfer amnewid stringiau. Mae'n hawdd ei ddefnyddio, ac mae'n cynnig llawer o opsiynau, gan gynnwys defnyddio regex, amnewid yn lle, a defnyddio blokiau. Mae'n ddefnyddiol ar gyfer amnewid testun, llinellau, a hyd yn oed cynnwys HTML. Gobeithio bod yr erthygl hon wedi rhoi gwybodaeth fanwl i chi am sut i ddefnyddio `gsub` yn Ruby.

Peidiwch ag anghofio ymarfer gyda `gsub` yn eich prosiectau Ruby nesaf, a byddwch yn gweld pa mor ddefnyddiol yw'r dull hwn!

Published: August 13, 2024

© 2024 RailsInsights. All rights reserved.