Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: C# Ongelma

make3003 [03.12.2008 07:41:48]

#

Hei,
Olen tekemässä pluginia(dll) yhteen ohjelmaan mikä nopeuttaa työn tekoa.

        // Tieto syötetään tekstinä mikä on esim. "25.0 50.0 25.0"
        [Tekla.Structures.Plugins.StructuresField("ymp_jako")]
        public string ympjako;

Tuossa ei ole mitään ongelmaa, mutta...

                data.ympjako; // sisältää "25.0 50.0 25.0"
                foreach (double Value in aSpacings)

                    RebarGroup.Spacings.Add(Value);

...ongelmana on se, miten saan nuo 25,50,25 erotettu toisistaan ja muutettua ne myös double:ksi. Olen yrittänyt kaikkea mutta ei tulosta.

EDIT: Koodia

Pekka Karjalainen [03.12.2008 10:00:06]

#

Haluat siis saada merkkijonosta jäsennettyä useita lukuja?

Merkkijonot voi ensin pätkiä osiin String.Split-metodilla, jonka parametrina on taulukko mahdollisia erottimia. Sitten merkkijonot voi jäsentää double.Parse-metodilla. Tässä on esimerkki, joka näyttää toimivan. En ole C#-guru. Käytä omalla riskillä.

using System;
using System.Globalization;

class Example
{
    public static void Main(string[] args)
    {
    String exampleData1 = "1.2;2.3;3.4;4.5";
    String exampleData2 = "9.8 8.7 7.6 6.5";
    char[] splitter = {';', ' '};

    /* tämä kohta varmistaa, että lukujen jäsennyksessä piste (eikä pilkku)
       on desimaalierotin. */
    CultureInfo enUS = new CultureInfo("en-US");

    String[] splits = exampleData1.Split(splitter);
    Console.WriteLine("Puolipisteet");
    foreach (String str in splits)
        {
        /* muista napata FormatException oikeassa ohjelmassa */
        double value = double.Parse(str, enUS);
        Console.WriteLine("=> {0}", value);
        }

    splits = exampleData2.Split(splitter);
    Console.WriteLine("\nVälilyönnit");
    foreach (String str in splits)
        {
        double value = double.Parse(str, enUS);
        Console.WriteLine("=> {0}", value);
        }
    }
}

Jos en käytä enUS-CultureInfo-objektia, omassa koneessani double.Parse ei ymmärrä pistettä erottimena, vaan vaatii pilkun ,kuten suomalainen käytäntö on. Ts. muista tehdä ohjelmaasi kuuluva lokalisointi.

make3003 [04.12.2008 18:03:03]

#

Kiitos koodista, täytyy testailla huomenna töissä jos ehdin.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta