Ruby regexp kullanarak "Lorem 123 ipsum 456 879" => "123456879" gibi bir cümle dizesinden tüm rakamlar nasıl alınır?Dize regexp ruby tüm basamakları nasıl alınır?
19
A
cevap
43
Sadece diğer her şeyi değiştirin.
result = subject.gsub(/[^\d]/, '')
4
"Lorem 123 ipsum 456 879".scan(/\d+/).join # => "123456879"
6
Ref this
result = subject.gsub(/\D/, '')
1
Bazı doğru cevaplar zaten muhtemelen kullanmak istediğini içeren, verilen. Biraz daha düşük seviyeli yol: regex olmadan
"Lorem 123 ipsum 456 879".chars.select {|c| c =~ /\d/}.join
7
: @steenslag olduğu gelen
"Lorem 123 ipsum 456 879".delete('^0-9') #=>"123456879"
0
Hep parantez şeyi kullanarak düşünce
"nwa240".chars.select {|s| s =~ /[0-9]/}
4
versiyonunu okumak daha kolaydı en hızlı, thx!
require 'benchmark'
class ExtractInt
def self.v1(string)
string.gsub(/[^\d]/, '')
end
def self.v2(string)
string.gsub(/\D/, '')
end
def self.v3(string)
string.delete('^0-9')
end
def self.run(m, arg)
10000.times do
self.send(m, arg)
end
end
end
Benchmark.bmbm do |x|
x.report('v1') { ExtractInt.run(:v1, 'AAAA4000') }
x.report('v2') { ExtractInt.run(:v2, 'AAAA4000') }
x.report('v3') { ExtractInt.run(:v3, 'AAAA4000') }
end
# Rehearsal --------------------------------------
# v1 0.040000 0.000000 0.040000 ( 0.041564)
# v2 0.040000 0.000000 0.040000 ( 0.042386)
# v3 0.010000 0.000000 0.010000 ( 0.011604)
# ----------------------------- total: 0.090000sec
# user system total real
# v1 0.040000 0.000000 0.040000 ( 0.042176)
# v2 0.040000 0.000000 0.040000 ( 0.043753)
# v3 0.010000 0.000000 0.010000 ( 0.012960)
İlgili konular
- 1. JS regex: tüm basamakları dize ile değiştir
- 2. Ruby gsub Regexp birçok maçta nasıl kullanılır?
- 3. Tüm AMA dize
- 4. Android'de dize genişliği nasıl alınır?
- 5. Dize TextWidth (Tuvalsiz) nasıl alınır?
- 6. Dize sonunda sayı nasıl alınır?
- 7. Ruby dize sekizlik mi?
- 8. RegExp
- 9. VBScript - regexp
- 10. Regex.Replace kullanarak dize sayıları nasıl alınır?
- 11. regexp-me kütüphanesi nasıl kullanılır?
- 12. Tüm çevre değişkenleri nasıl alınır?
- 13. ruby 1.9
- 14. regexp nasıl tırnak açmayın?
- 15. Tüm URL'leri Ruby
- 16. OCaml'de biçimlendirilmiş dize nasıl alınır? OCaml yılında
- 17. Bir dize değişmezine çift tırnak nasıl alınır?
- 18. Sınıf adı dize olarak nasıl alınır?
- 19. ViewPager Bağdaştırıcısı içinde Dize Kaynağı nasıl alınır?
- 20. Ruby: eşittir neden eşit regexp neden ayrıştırma hatası neden olur?
- 21. TypeScript'te RegExp
- 22. Doğumdan itibaren ondalık basamakları hesapla
- 23. Ruby: gsub Dize ile Dosyayı Değiştir
- 24. Ruby uygulamasıyla tamamlanmamış anahtarla AWS S3'ten nesneler nasıl alınır
- 25. değiştirin, tüm dize
- 26. Android'deki tüm ParseObject satırları nasıl geri alınır
- 27. Symfony2'deki tüm posta parametreleri nasıl alınır?
- 28. Perl ile tüm Gruplar nasıl geri alınır?
- 29. Tüm iç metinler nasıl XPATH tarafından alınır?
- 30. Jtree'deki tüm kök düğümleri nasıl alınır?
Ayrıca için \ D kullanabilirsiniz [^ \ d] ...> "Lorem 123 456 879 ipsum" .gsub (/ \ D /, '') => "123456879" – oylenshpeegul