Entwickler-Ecke

Basistechnologien - String durchgehen und zerlegen


andy11 - Mo 15.02.10 15:36
Titel: String durchgehen und zerlegen
ich habe hier folgenden String den ich bearbeiten will nur nicht weiß welche Klassen dafür ideal wären:
"Klausen-Leopoldsdorf 400 m -2.5° 80 % Nordwest, 7 km/h Nordwest, 14 km/h 0.0 mm 0 % 1011.8 hPa"

jetzt will ich jedes Wort in einem String umwandeln aber wie mache ich das ist die Frage?
Das ganze soll am ende dann in einer excel Tabelle rein


Moderiert von user profile iconChristian S.: Topic aus WinForms verschoben am Mo 15.02.2010 um 15:08


danielf - Mo 15.02.10 15:39

Hallo,

die Klasse string bietet dir an, einen String abhängig von einem Zeichen zu zerlegen. In der Doku wirst du fündig. Das Beispiel wurde auch schon zig mal im Internet und hier im Forum gezeigt...

Das solltest du hin bekommen :)

Gruß Daniel


andy11 - Mo 15.02.10 15:43

Zitat:
die Klasse string bietet dir an, einen String abhängig von einem Zeichen zu zerlegen.

Auch nach mehreren Leerzeichen?
dh dort wo nur ein Leerzeichen bleibt unbehaart und ab mehreren Leerzeichen soll er übernehmen

die sache schaut ja in wirklichkeit so aus:
Wiener Neustadt 285 m -0.5° 68 % Nordost, 8 km/h Nordost, 12 km/h 0.0 mm 0 % 1011.5 hPa
dh ein leerzeichen soll er lassen und wenns mehr als 2 sind fängt er sozusagen an aufzumnehmen

außerdem weiß ich die namen nicht, das soll das programm auch nicht, sonst wär ja das ganze auf diesen string beschrenkt


danielf - Mo 15.02.10 15:45

Such dir die Funktion und schau sie dir an... das klärt deine Fragen.


andy11 - Mo 15.02.10 15:49

http://www.aspheute.com/artikel/20000803.htm
da steht glaub ich alles drin was mit strings zu tun hat
vielleicht kannst du mir sagen mit welcher Methode ich etwas anfangen könnte, denn ich seh da nichts brauchbares drinn


Kenpachi - Mo 15.02.10 15:50

Gratulation. Jemandem, der in einen Support-Forum eine Frage stellt, damit zu helfen, ihm eine uneindeutige Antwort zu geben ist schon außergewöhnlich nett.

andy11, du könntest dir die Split-Methode der String-Klasse nehmen und damit mal ein wenig rum experimentieren.
http://msdn.microsoft.com/de-de/library/system.string.split%28VS.80%29.aspx
Das könnte dann so aussegen: string[] MyStrings = DeinString.Spilt("  ", StringSplitOptions.None);

Alternativ könntest du dir deinen String auch in ein Char-Array umwandeln (string.ToCharArray) und dann mit einer Schleife durchgehen, wo du gerne trennen möchtest.
Die Lösung mit der Split-Methode ist natürlich performanter.


Grüße~


danielf - Mo 15.02.10 16:05

Dein Link ist im Beispiel von ASP.NET. Am Besten für Klassen Doku bei MSDN [http://msdn.microsoft.com/en-us/library/system.string.aspx] schauen.

und string[] MyStrings = DeinString.Spilt(" ", StringSplitOptions.None); ist leider auch keine korrekte Antwort.

C#-Quelltext
1:
string[] MyStrings = "blub".Split(new string[] {"  "}, StringSplitOptions.None);                    


Es geht ja darum, dass man den Leuten hilft. Den Code runter schreiben würde natürlich viel schneller gehen.


c#surfer - Mo 15.02.10 16:11

Da andy11 vieleicht eine ganze Datei mit diesen Datensätzen hat, könnte man auch Excel die Arbeit überlassen. Da kann man für den Dateiimport das Trennzeichen (hier das Leerzeichen) festlegen.


andy11 - Mo 15.02.10 16:27

dank soweit, ich habe jetzt aber ein weiteres Problem und zwar wie kann ich ihm sagen ab 3 Leerzeichen ODER mehr soll er trennen?


C#-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
string[] Array1 = new string[3];
        string[] stringArr = new string[] { "   " };
        private void cmdsplit_Click(object sender, EventArgs e)
        {
            try
            {
                string s = Convert.ToString(txteingabe.Text);
                Array1 = s.Split(charArr, 10, StringSplitOptions.None);
                txt1.Text = Array1[0];
                txt2.Text = Array1[1];
                txt3.Text = Array1[2];
            }
            catch { }
        }


danielf - Mo 15.02.10 16:51

Du kannst auch mit Regulären Ausdrücken einen String zerlegen.
Dafür kannst du die Klasse Regex verwenden.

Auf folgenden Links findest du Informationen zu Regulären Ausdrücken in .NET

http://www.juergen-bayer.net/artikel/CSharp/Regulaere-Ausdruecke/Regulaere-Ausdruecke_001.aspx#h2_46

http://mojo-corp.de/regulaere_ausdruecke_c_sharp.html

Pattern: "\s{2,}";

\s == whitespace
{2,} Quantifier der sagt min 2.

Gruß Daniel


andy11 - Mo 15.02.10 17:00

ouukay danke guys