/ / Wielokrotne działanie na łańcuchu w rubinie za jednym razem [zamknięte] - ruby

Wielokrotne działanie na ciąg w rubinie za jednym zamachem [zamknięte] - rubin

Oto napis, który zawiera treść „cześć wszystkim, jestem tu nowy (poważnie)”
Jak mogę zwrócić „hi + all + I” m + new + here ”za pomocą kodu ruby?

Odpowiedzi:

2 dla odpowiedzi № 1

Dlaczego nie po prostu połączyć łańcucha .gsub() polecenia?

x.gsub(/(.*?)/, "").gsub(/s+/,"+")

Możesz także zaktualizować swój pierwszy gsub aby usunąć wszystkie białe spacje poprzedzające nawiasy.

x.gsub(/s+(.*?)/, "")

2 dla odpowiedzi nr 2

Jeśli naprawdę chcesz użyć singla gsub operacja, możesz przekazać hash jako parametr zastępczy:

x.gsub(/( *(.*?)| )/, " " => "+", default: "")
# => "hi+all"

W ten sposób przechwytuje się coś w nawiasach (w tym spacje wiodące) lub spacje. Jeśli przechwytywanie jest spacją - zostaje zastąpione przez "+"w przeciwnym razie zastępuje pusty ciąg ""