PranasLu's Blog

2010-02-27

SumToText – skaičių vertimas žodžiais

Filed under: Programming — Tags: , , — pranaslu @ 20:45

Update 2011-11-18: Pridėtas linksnių enumeratoriaus Declension kodas.

Update 2010-07-25: Pridėtas pagalbinės klasės Guards kodas.

Update 2010-05-20: Anksčiau IntToTextFormatProvider palaikydavo int (Int32) tipą, todėl maksimalus skaičius, kurį galėjo paversti į tekstą buvo 2147483647 (Int32.MaxValue). Dabar galima paduoti long (Int64) tipo skaičių. Maksimali suma, kurią galima paversti į tekstą, dabar yra – 999999999999,99.

IntToTextFormatProvider – skaičiaus vertimas žodžiais

            var result = IntToTextFormatProvider.NumberToText(2054178000);
            // du milijardai penkiasdešimt keturi milijonai šimtas septyniasdešimt aštuoni tūkstančiai
 
            var balance = 128; 
            var result = string.Format(new IntToTextFormatProvider(), "{0:d} dienos balansas yra {1:text} Lt", 
                new DateTime(2010, 02, 15), balance);            
            // 2010-02-15 dienos balansas yra šimtas dvidešimt aštuoni Lt

SumToTextFormatProvider – pinigų sumos vertimas žodžiais

            var result = SumToTextFormatProvider.SumToText(15.1m, "LTL", "cnt");
            // penkiolika LTL 10 cnt

            var currencyStr_Declension_Map = new Dictionary<Declension, string>()
            {
                { Declension.SingularNominative, "Litas"},
                { Declension.PluralNominative, "Litai"},
                { Declension.PluralGenitive, "Litų"}
            };
            var result = SumToTextFormatProvider.SumToText(15.1m, currencyStr_Declension_Map, "cnt");
            // penkiolika Litų 10 cnt

 

            var result = string.Format(new SumToTextFormatProvider("cnt"), "{0:d} balansas yra {1:text}", 
                new DateTime(2010, 02, 15), 1001.05m);
            // 2010-02-15 dienos balansas yra tūkstantis vienas Litas 05 cnt

Download files:

IntToTextFormatProvider.cs

IntToTextFormatProviderTests.cs

SumToTextFormatProvider.cs

SumToTextFormatProviderTests.cs

Guards.cs

Declension.cs

4 Comments »

  1. Ačiū! Veikia puikiai, bet tik išjungus Guard. statementus. Čia kažkoks third party library? ar utilsai?

    Comment by Gytis — 2010-07-23 @ 08:30

    • Ačiū už pastabą. Pridėjau pagalbinės klasės Guards kodą.

      Comment by pranaslu — 2010-07-25 @ 14:03

  2. Dekui..daug darbo ideta buvo, kad tai padaryti ir pasidalinti – saunuolis :)

    Comment by Tommix — 2011-11-04 @ 11:45

    • prasau, gero naudojimo :)

      Comment by pranaslu — 2011-11-04 @ 13:00


RSS feed for comments on this post. TrackBack URI

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

Create a free website or blog at WordPress.com.

%d bloggers like this: