Skip to main content

Posts

Showing posts with the label string

How to display simple math formulas using .NET

Cum sa formatam un text astfel incat sa avem ceva de genul: By default, acest lucru se poate folosind Unicode. Trebuie sa avem doar rabdare sa formatam textul. De exemplu pentru a scris (x+1)^2 este nevoie de urmatorul artificiu: String.Format("(x+1){0,-3}",'\u00B2'); Pentru a scrix (x+1)^3 este nevoie sa scriem urmatoarea linie de cod: String.Format("(x+1){0,-3}",'\u00B3'); Teoretic, cu destula imaginatie putem sa afisam orice formula matematica, dar pentru acest lucru exista nenumarate tool-uri care ne pot ajuta. La formule complexe pot sa apara probleme de afisare in functie platforma, versiune etc. Pentru lucruri simple merita merita sa folosim formatarea, deoarece textul afisat de catre noi o sa arate mult mai bine. Lista tuturor caracterelor Unicode o puteti gasii aici: http://www.tamasoft.co.jp/en/general-info/unicode.html

How to normalize text to English base

Cand avem o aplicatie care este accesata din mai multe tari, poate sa apara o problema cand se pune problema cautarii sau stocarii datelor. Daca avem o adresa scrisa in limba romana de exemplu o sa avem caractere precum 'â', 'ț', ... dar cand un utilizator dintr-o alta tara o sa caute o anumita adresa de exemplu vrem sa normalizam textul. O varianta destul de simpla la aceasta problema este sa normalizam tot textul spre caractere ascii base. In acest caz de exemplu 'ț' o sa devina 't'. Acest lucru se face destul de simplu folosind metoda Normalize , făcând o descompunere canonica a textului. string normalizeText = sourceText.Normalize(Normalize.FormD); Trebuie sa avem grija la unele semne de legatura precum 'ß', pentru care trebuie sa facem manual transformarea( dacă dorim). Mai jos gasiti implementarea pe care eu o propun: private static readonly char[] SplitChars; private static readonly Dictionary<char, char> SpecialChars; static Constru...

ToLower - optimization

Mai mult ca sigur stiti ce face metoda ToLower( cand vreti sa transformati un string, pentru a avea toate caracterele mici este nevoie sa apelam la aceasta metoda). Daca ne uitam peste definitie, o sa observam ca exista 3 variante ToLower() ToLowerInvariant() ToLower(CultureInfo cultureInfo) Cele 3 metode fac acelasi lucru, cel mai mult m-a interesat daca exista diferente de performanta intre ele. Am rulat codul de mai jos de 100.000.000 de ori. string uppertText = "Salut. Ce MAI fACI?"; CultureInfo cultureInfo = CultureInfo.CurrentCulture; Stopwatch stopwatch = new Stopwatch(); stopwatch.Start(); for( int i=0; i<100000000; i++) { string lowerText = upperText.ToLower(); //string lowerText = upperText.ToLowerInvariant(); //string lowerText = upperText.ToLower(cultureInfo); } stopwatch.Stop(); Console.WriteLine("Elapsed type: {0}",stopwatch.Elapsed); Rezultatul pe care l-am obtinut este destul de interesant: ToLower() - 10.51 s ToLowerInvariant() - 17.32 ...