Saya memiliki string di Ruby:
sentence = "My name is Robert"
Bagaimana saya bisa mengganti satu kata dalam kalimat ini dengan mudah tanpa menggunakan kode kompleks atau loop?
Saya memiliki string di Ruby:
sentence = "My name is Robert"
Bagaimana saya bisa mengganti satu kata dalam kalimat ini dengan mudah tanpa menggunakan kode kompleks atau loop?
Jawaban:
sentence.sub! 'Robert', 'Joe'
Tidak akan menimbulkan pengecualian jika kata yang diganti tidak ada dalam kalimat ( []=
varian akan).
Di atas hanya menggantikan contoh pertama dari "Robert".
Untuk mengganti semua instance gunakan gsub
/ gsub!
(mis. "Substitusi global"):
sentence.gsub! 'Robert', 'Joe'
Di atas akan menggantikan semua instance Robert dengan Joe.
Jika Anda berurusan dengan teks bahasa alami dan perlu mengganti kata, bukan hanya bagian dari string, Anda harus menambahkan sejumput ekspresi reguler ke gsub Anda karena subtitusi teks biasa dapat menyebabkan hasil yang merusak:
'mislocated cat, vindicating'.gsub('cat', 'dog')
=> "mislodoged dog, vindidoging"
Ekspresi reguler memiliki batas kata, seperti \b
yang cocok dengan awal atau akhir kata. Jadi,
'mislocated cat, vindicating'.gsub(/\bcat\b/, 'dog')
=> "mislocated dog, vindicating"
Di Ruby, tidak seperti beberapa bahasa lain seperti Javascript, batas kata kompatibel dengan UTF-8, jadi Anda dapat menggunakannya untuk bahasa dengan huruf Latin non-Latin atau diperpanjang:
'сіль у кисіль, для весіль'.gsub(/\bсіль\b/, 'цукор')
=> "цукор у кисіль, для весіль"
\b
tidak berfungsi di dalamnya, Anda perlu menggunakan analisis morfologis atau hal-hal seperti itu dalam kasus tersebut. Juga, +1 untuk contoh lucu.
Anda dapat mencoba menggunakan cara ini:
sentence ["Robert"] = "Roger"
Maka kalimatnya akan menjadi:
sentence = "My name is Roger" # Robert is replaced with Roger
IndexError
. Kalau tidak, kata yang bukan bagian dari kalimat akan mengarah ke:string not matched (IndexError)
my
)?