Jsou občas situace, kdy si zaťukáte na čelo "Jak tohle mohl někdo vymyslet". Třeba dnes jsem řešil v podnikovém IS přepočet jednotek na kartách zboží. Nějaký můj předchůdce vyrobil na kartách zboží "okýnko" do kterého se zapisuje přepočítací koeficient. A to tak že včetně měrných jednotek takže např: "18,33 kg/m" No a teď po mě chtějí naprogramovat počítatelný sloupec, kde se bude automaticky počítat hmotnost skladové položky. A jak mám asi násobit textovým řetězcem? :-)
Takže řešením bylo naprogramovat dva nové sloupce - číselný pro koeficient a textový pro měrné jednotky. No a aby obchoďáci nemuseli přepisovat hodnoty asi u 13 tisíc karet, vyrobil jsem si script na nakrmení nových polí z původních hodnot.
Zde je skript a lze použít i na jakékoliv vyseparování textových nebo číselných hodnot ze smíšeného řetězce.
Nutno dodat, že k výsledku jsem došel ještě i jinou cestou, ale nakonec jsem si pro univerzálnost zvolil toto řešení.
Vstup: @Vstup= '18,3 Kg/m'
Výsledek: @Text='Kg/m' , @Cislo = 18.30
Vstup: @Vstup= ' 1 8,3 Kg/m '
Výsledek: @Text='Kg/m' , @Cislo = 18.30
Vstup: @Vstup= 'Ton12da55Kouta44'
Výsledek: @Text='TondaKouta' , @Cislo = 125544.00
Pozn: vstupní proměnná je @Vstup, výstupní jsou @Text a @Cislo
Jak skript funguje? Triviálně. Posuzuje vždy poslední znak v řetězci, pokud znak není číslo, přidá ho do proměnné @Text, jinak ho přidá do proměnné @CisloText. Pak poslední znak odmaže a pokračuje opět v porovnávání posledního znaku. Nakonec odstraní mezery na začátku a konce textu a číslo přetypuje z textového řetězce na desetinné číslo.
Jak říkám, k výsledku lze dojít i jinou cestou, ale mě se tato líbí pro možnou modifikaci a užití i na jiné případy.