Jak přidat mezery mezi měna a částka, která je uvnitř řetězce?

0

Otázka

Můj řetězec v Ruby obsahuje měnu a částku.

Koupil jsem si a položku na USD500.80 z on-line obchodu store 123X87

Očekávám následující výsledek

Koupil jsem si a položky v USD 500.80 z on-line obchodu store 123X87

Snažil jsem se s Regex ale nemůže uspět.

str = "I have purchased and item at USD500.80 from online store store 123X87"

str.gsub(/\d+/, ' \0 ')

# wrong result

"I have purchased and item at USD 500 . 80  from online store store  123 X 87 "

Nejsem si jistý, co měny, které obsahuje řetězec. Já jen vím, měnu a částku, nemají prostor.

str = "I have purchased and item at EUR500.80 from online store store 123X88"

str = "I have purchased and item at GBP500.80 from online store store 123X88"
ruby ruby-on-rails
2021-11-23 09:56:34
1

Nejlepší odpověď

3

Já bych změnit regulární výraz pro skenování pro všechny známé kódy měn výslovně. Jakékoliv over-generalizované regex (např. \w+\d+, například), je vázán na zlomit další části řetězce, jako pořadová čísla.

str = "I have purchased and item at USD500.80 from online store store 123X87"
str.gsub(/(USD|EUR)(\d+)/, '\1 \2')
# => "I have purchased and item at USD 500.80 from online store store 123X87"
2021-11-23 10:42:14

Aktualizováno mou otázku. Pokud jsem pomocí 100 měny a V případě, že nevím jaké měně byl použit uvnitř řetězce, co bude váš návrh?
siv rj

@sivrj Můj návrh bude stejný. Pořád je to konečný seznam.
Sergio Tulentsev

V jiných jazycích

Tato stránka je v jiných jazycích

Русский
..................................................................................................................
Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................