Fetstil Fetstil Kursiv Understrykning linje färgläggning tabellverk Punktlista Nummerlista Vänster Centrerat högerställt Utfyllt Länk Bild htmlmode
  • Forum & Blog
    • Forum - översikt
      • .Net
        • asp.net generellt
        • c#
        • vb.net
        • f#
        • silverlight
        • microsoft surface
        • visual studio .net
      • databaser
        • sql-server
        • databaser
        • access
        • mysql
      • mjukvara klient
        • datorer och komponenter
        • nätverk, lan/wan
        • operativsystem
        • programvaror
        • säkerhet, inställningar
        • windows server
        • allmänt
        • crystal reports
        • exchange/outlook
        • microsoft office
      • mjukvara server
        • active directory
        • biztalk
        • exchange
        • linux
        • sharepoint
        • webbservers
        • sql server
      • appar (win/mobil)
      • programspråk
        • c++
        • delphi
        • java
        • quick basic
        • visual basic
      • scripting
        • asp 3.0
        • flash actionscript
        • html css
        • javascript
        • php
        • regular expresssion
        • xml
      • spel och grafik
        • DirectX
        • Spel och grafik
      • ledning
        • Arkitektur
        • Systemutveckling
        • krav och test
        • projektledning
        • ledningsfrågor
      • vb-sektioner
        • activeX
        • windows api
        • elektronik
        • internet
        • komponenter
        • nätverk
        • operativsystem
      • övriga forum
        • arbete karriär
        • erbjuda uppdrag och tjänster
        • juridiska frågor
        • köp och sälj
        • matematik och fysik
        • intern information
        • skrivklåda
        • webb-operatörer
    • Posta inlägg i forumet
    • Chatta med andra
  • Konto
    • Medlemssida
    • Byta lösenord
    • Bli bonsumedlem
    • iMail
  • Material
    • Tips & tricks
    • Artiklar
    • Programarkiv
  • JOBB
  • Student
    • Studentlicenser
  • KONTAKT
    • Om pellesoft
    • Grundare
    • Kontakta oss
    • Annonsering
    • Partners
    • Felanmälan
  • Logga in

Hem / Forum översikt / inlägg

Posta nytt inlägg


String.Format nummerformat

Postades av 2008-02-17 09:43:52 - Peter Carlsson, i forum c# (c-sharp), Tråden har 6 Kommentarer och lästs av 1891 personer

Hej.

Har ett litet delikat problem som jag inte lyckas lösa så snyggt.
Jag plockar ut data ur en databas och vill formattera utsträngen på ett
specifikt sätt. Se kod;

string[] aryStrings = new string[3];
aryStrings[0] = "S98";
aryStrings[1] = "KONTROLL";
aryStrings[2] = "890000";

// format på utdata: "S98   -KONTROLL :: 89.00,00"
string stringformat = "{0}   -{1} :: {2}";

string output = String.Format(stringformat, aryStrings);


Problemet är att jag inte lyckas med att formattera {2} till numeriskt
eftersom jag använder en string array. Hade jag använt en int array t.ex.
så hade jag kunnat använda {2:##.##,##}.

Har nån något bra förslag på formatteringen eller om jag kanske ska
använda nåt annat sätta att lagra data istället för string array.

Tackar på förhand!

// Peter Carlsson


Svara

Sv: String.Format nummerformat

Postades av 2008-02-17 10:20:59 - Johan Djupmarker

Kan du inte formatera 890000 till 89.00.00 i din string-array? Så att det redan är rätt formaterat när du skapar din formaterade sträng.

/Johan


Svara

Sv:String.Format nummerformat

Postades av 2008-02-17 10:48:53 - Peter Carlsson

Hej Johan.

Detta är knepigt att förklara :)
Problemet är att jag inte vet hur datat ser ut.
Jag ger ett bättre "live" exempel istället.

Dokumentationen ser ut så här på för en sk. "event";
Event: 6
Dataformat: "SSTTMMZZZZZZZZZZ"
Show as: "SS TTMM KONTROLL Z.ZZZ.ZZZ,ZZ -----------"

Exempeldata på en event: "321631  11410000"
Detta ska då ge en sträng som ser ut så här: "32 1631 KONTROLL 114.100,00 -----------"

Det finns över 2400 eventnummer så jag måste skapa en databas med någon slags mall på hur strängen ska visas i programmet. Så vad jag har gjort är att skapat en "mall" som ser ut så här;

event mask stringformat
6 0011112222222222 {0} {1} KONTROLL {2} -----------

Här är min kod som jag använder nu;

            textBox1.Text = "321631  11410000@";
            textBox2.Text = "0011112222222222";
            textBox3.Text = "{0} {1} KONTROLL {2}  -----------";

            string data = textBox1.Text;
            string parameters = textBox2.Text;
            string textformat = textBox3.Text;

            int lastindex = Convert.ToInt32(parameters.Substring(parameters.Length - 1, 1));

            string[] aryData = new string[lastindex + 1];
            for (int i = 0; i <= lastindex; i++)
            {
                int iTempStart = parameters.IndexOf(i.ToString());
                int iTempStop = parameters.LastIndexOf(i.ToString());
                int iTempLen = (iTempStop + 1) - iTempStart;
                aryData[i] = data.Substring(iTempStart, iTempLen).Trim();
            }
            textBox4.Text = String.Format(textformat, aryData);


Det kanske finns nåt ännu bättre sätt att formatera strängarna så jag är öppen för förslag. :)

Hoppas detta beskriver mitt problem lite bättre.

// Peter




Svara

Sv: String.Format nummerformat

Postades av 2008-02-17 14:09:54 - Johan Djupmarker

Jo, jag förstod att du datat kom från något annat ställe. Tänkte mer att du skulle göra något sånt här, men det kanske inte är möjligt?

aryStrings[2] = Convert.ToInt32(aryStrings[2]).ToString("##.##,##");

Eller hur nu syntaxen kan vara, tanken var iaf att formatera talen innan resten av strängen.

/Johan


Svara

Sv:String.Format nummerformat

Postades av 2008-02-17 20:20:22 - Peter Carlsson

Mm.. förstår vad du menar.
Jag tror jag får formatera det så här "{0} {1} KONTROLL {2}.{3}.{4},{5} -----------"
och sen inte bry mig om att t.ex. {2} är "". Inte så snyggt men det funkar.
Jag kanske kan specificera i databasen vilket fält som är numeriskt och trixa till det på nåt sätt.
Men det hade varit så optimalt att säga t.ex. {2:#.###.###,00} fastän det är en sträng.

// Peter


Svara

Sv: String.Format nummerformat

Postades av 2008-02-18 19:42:45 - Chris Klug

Andra parametern in till string.Format är object[]. Kan du inte helt enkelt bara göra om din array till lite mindre typad...typ:
<code>
object[] aryObjects = new object[3];
aryObjects [0] = "S98";
aryObjects [1] = "KONTROLL";
aryObjects [2] = 890000;
</code>

och sedan:

<code>
string stringformat = "{0} -{1} :: {2:###.###.###,00}";
string output = String.Format(stringformat, aryObjects );
</code>
Om det nu var formatet du ville ha... Funkar bara på svenskt OS dock... Formatsträngen alltså...


Svara

Sv:String.Format nummerformat

Postades av 2008-02-21 20:35:12 - Peter Carlsson

Hej Chris.

Du löste det!
Jag har kämpat med en annan lösning lite eftersom detta inte höll på andra sätt. :(
Däremot så får jag användning av det i mitt nästa projekt! :)

Tack så mycket!

// Peter


Svara

Nyligen

  • 19:55 kick-off med fokus på hälsa?
  • 19:53 kick-off med fokus på hälsa?
  • 16:24 Föreslå en skönhetsklinik online
  • 16:23 Föreslå en skönhetsklinik online
  • 18:42 Hvor finder man håndlavede lamper
  • 18:41 Hvor finder man håndlavede lamper
  • 16:36 Allt du behöver veta om keramiskt
  • 16:14 Vem anlitar man egentligen när tak

Sidor

  • Hem
  • Bli bonusmedlem
  • Läs artiklar
  • Chatta med andra
  • Sök och erbjud jobb
  • Kontakta oss
  • Studentlicenser
  • Skriv en artikel

Statistik

Antal besökare:
Antal medlemmar:
Antal inlägg:
Online:
På chatten:
4 570 710
27 958
271 751
1 070
0

Kontakta oss

Frågor runt konsultation, rådgivning, uppdrag, rekrytering, annonsering och övriga ärenden. Ring: 0730-88 22 24 | pelle@pellesoft.se

© 1986-2013 PelleSoft AB. Last Build 4.1.7169.18070 (2019-08-18 10:02:21) 4.0.30319.42000
  • Om
  • Kontakta
  • Regler
  • Cookies