de-vraag
  • Pertanyaan
  • Tag
  • Pengguna
Notifikasi
Imbalan
Registrasi
Setelah Anda mendaftar, Anda akan diberitahu tentang balasan dan komentar untuk pertanyaan Anda.
Gabung
Jika Anda sudah memiliki akun, masuk untuk memeriksa pemberitahuan baru.
Akan ada hadiah untuk pertanyaan, jawaban, dan komentar tambahan.
Lebih
Sumber
Sunting
 Cristiano
Cristiano
Question

Bagaimana untuk menghapus karakter tertentu dari sebuah string di Ruby?

Saya memiliki beberapa string yang terlihat seperti ini:

"((String1))"

Mereka semua panjang yang berbeda. Bagaimana aku bisa menghapus tanda kurung dari semua string ini dalam loop?

77 2013-10-28T14:39:38+00:00 5
Arup Rakshit
Arup Rakshit
Pertanyaan edit 18 September 2019 в 4:15
Pemrograman
ruby
string
trim
Solution / Answer
Arup Rakshit
Arup Rakshit
28 Oktober 2013 в 2:42
2013-10-28T14:42:36+00:00
Lebih
Sumber
Sunting
#22643525

Lakukan seperti di bawah ini menggunakan String#tr :

 "((String1))".tr('()', '')
 # => "String1"
 Nakilon
Nakilon
Jawaban edit 3 Juni 2015 в 5:34
152
0
 jbr
jbr
28 Oktober 2013 в 2:44
2013-10-28T14:44:58+00:00
Lebih
Sumber
Sunting
#22643526

Jika anda hanya ingin menghapus dua karakter pertama dan terakhir, maka anda dapat menggunakan negatif indeks pada string:

s = "((String1))"
s = s[2...-2]
p s # => "String1"

Jika anda ingin menghapus semua tanda kurung dari string anda dapat menggunakan delete metode pada class string:

s = "((String1))"
s.delete! '()'
p s #  => "String1"
 jbr
jbr
Jawaban edit 28 Oktober 2013 в 3:07
37
0
 falsetru
falsetru
28 Oktober 2013 в 2:41
2013-10-28T14:41:23+00:00
Lebih
Sumber
Sunting
#22643524

Menggunakan String#gsub dengan ekspresi reguler:

"((String1))".gsub(/^\(+|\)+$/, '')
# => "String1"
"(((((( parentheses )))".gsub(/^\(+|\)+$/, '')
# => " parentheses "

Ini akan menghapus sekitarnya kurung saja.

"(((((( This (is) string )))".gsub(/^\(+|\)+$/, '')
# => " This (is) string "
19
0
 daino3
daino3
18 Agustus 2015 в 5:59
2015-08-18T17:59:47+00:00
Lebih
Sumber
Sunting
#22643527

Bagi mereka yang datang di ini dan mencari kinerja, sepertinya #menghapus dan #tr adalah tentang yang sama dalam kecepatan dan 2-4x lebih cepat dari gsub.

text = "Here is a string with / some forwa/rd slashes"
tr = Benchmark.measure { 10000.times { text.tr('/', '') } }
# tr.total => 0.01
delete = Benchmark.measure { 10000.times { text.delete('/') } }
# delete.total => 0.01
gsub = Benchmark.measure { 10000.times { text.gsub('/', '') } }
# gsub.total => 0.02 - 0.04
14
0
 zee
zee
8 Juli 2017 в 6:22
2017-07-08T18:22:25+00:00
Lebih
Sumber
Sunting
#22643528

Berikut ini adalah cara yang lebih singkat untuk mencapai ini:

  1. menggunakan karakter Negatif kelas pencocokan pola
irb(main)> "((String1))"[/[^()]+/]
=> "String1"

^ - Cocok apa TIDAK di kelas karakter. Dalam charachter kelas, kami memiliki ( dan )

Atau dengan global substitusi "ALIAS: gsub" seperti orang lain telah disebutkan.

irb(main)> "((String1))".gsub(/[)(]/, '')
=> "String1"
1
0
Related communities 1
Ruby Indonesia
Ruby Indonesia
1 767 pengguna
Ruby adalah bahasa pemrograman dinamis berbasis skrip yang berorientasi objek. Tujuan dari ruby adalah menggabungkan kelebihan dari semua bahasa-bahasa pemrograman skrip yang ada di dunia.
Buka telegram
Tambahkan pertanyaan
Kategori
Semua
Teknologi
Budaya / Rekreasi
Kehidupan / Seni
Ilmu Pengetahuan
Profesional
Bisnis
Pengguna
Semua
Baru
Populer
1
UbiBot UK
Terdaftar 15 jam yang lalu
2
Галина Утяшова
Terdaftar 1 hari yang lalu
3
Asilbek Qadamboyev
Terdaftar 4 hari yang lalu
4
Akshit Mehta
Terdaftar 1 minggu yang lalu
5
me you
Terdaftar 1 minggu yang lalu
ID
JA
KO
RU
© de-vraag 2022
Sumber
stackoverflow.com
di bawah lisensi cc by-sa 3.0 dengan atribusi