Zkrácení počtu desetinných míst pomocí regulárního výrazu a pravidla Najít a nahradit

Ahoj, snad to někomu v budoucnu pomůže :wink:

Na supportu se nám do rukou dostal případ, kdy bylo potřeba zkrátit počet desetinných míst v ceně na 1 desetinné místo.

V Mergadu máme sice pravidlo Zaokrouhlit číslo, ale to nebylo možné použít, protože bylo potřeba číslo pouze zkrátit a né matematicky zaokrouhlit :thinking:

Spolu s @ludekvolejnik jsme to vyřešili za pomoci pravidla Najít a nahradit a jednoduchého regulárního výrazu. :face_with_monocle:

Postup

  • Pravidlo Najít a nahradit

  • Regulární výraz > Najít: ^(\d+(?:[\,\.]\d{1})?)(.*)$

    • Výraz vyhledá 1. skupinu řetězce čísel d+
    • s desetinným číslem odděleným tečkou nebo čárkou [\,\.]
    • s právě jedním desetinným místem d{1} (pokud potřebujeme číslo zkrátit na více des. míst, stačí přepsat číslo v { })
    • a na konci 2. skupinu všeho co se nachází za právě jedním desetinným číslem (.*)
  • Nahradit: \1 Zpětné lomítko a číslo odkazuje na 1. skupinu z regulárního výrazu.

V praxi:

Pokud si zapneme Sledování průchodu pravidel:

Regulární výraz si můžete prohlédnout a vyzkoušet zde:

3 Likes