Csharp - Alphabet deklarieren

zokker13

Moderator
Joined
Oct 12, 2008
Messages
6,719
Points
235
Moin moin!
Ich hab folgendes Problem, ich hätte gerne eine Variable (string salpha) das komplette Alphabet zugewiesen.
Also a, b, c ect.
Nur weiß ich nicht, wie das geht.

Im Internet hab ich von irgendwelchen Pattern gelesen, was ich garnicht verstanden habe.

Code:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace layout
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            string a = "a";
            string b = "b";

            if ("rosnvfj".Contains(a) || "rosnvfj".Contains(b))
            {
                this.BackColor = Color.Red;
            }
        }
    }
}
So sollte das ganze nicht aussehen, also dass ich 52Variablen deklariere und die dann einzeln abfrage.

Ich hätte es gerne wie folgt:
Code:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;

namespace layout
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e)
        {
            string alpha = [a-zA-Z]   <===So hab ich das im Netzt gesehen, mit den [a-zA-Z]

            if ("rosnvfj".Contains(alpha))
            {
                this.BackColor = Color.Red;
            }
        }
    }
}

Bitte helft mir!
 
Die Sachen die du im Netz gefunden hast, sind offensichtlich auf die Nutzung von regulären Ausdrücken (Regular Expressions) aus. Wie genau die funktionieren solltest du dir bei Interesse mal woanders durchlesen - gibt da jede Menge Quellen zu im Internet.
Du musst dafür die entsprechende Bibliothek laden (über using System.Text.RegularExpressions; )

Das Konzept bei solchen Ausdrücken ist, dass man ein Muster definiert und später überprüft, ob ein String diesem Muster entspricht.
In dem speziellen Fall hier ist eine Möglichkeit für den Ausdruck "[a-zA-Z]*" - das heißt das das Schema einen Ausdruck beschreibt der aus a-z, sowie A-Z besteht, die in beliebiger Reihenfolge verknüpft sind, dazu der "*"-Operator.

C#:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.Text.RegularExpressions;

namespace layout
{
    public partial class Form1 : Form{
        Regex alphabet = new Regex("[a-zA-Z]*");

        public Form1(){
            InitializeComponent();
        }

        private void button1_Click(object sender, EventArgs e){
            string myString = "rosnvfj";

            if (alphabet.IsMatch(myString)){
                this.BackColor = Color.Red;
            }
        }
    }
}
 
Last edited:
Genau das war das, was ich gelesen habe, ich Wurst hab nur die Syntaxe nie verstanden! Danke erstmmal dafür!
Bin an meinem Hauptproblem aber immernoch nicht weiter, ich muss mal weiter denken.

Danke für deine Hilfe!
 
was ist denn das Hauptproblem? :) Vllt. kann man einen Denkanstoß geben ;)
 
[OFFTOPIC] Man mal wieder ein Thema wo ich null Ahnung von hätte, wie blickt ihr da bloss durch Oo :respekt, ich würd bei sowas wo ich nur Codes sehe das wandelnde Orakellexika befragen, andere nennen ihn Osbes ^^
 
was ist denn das Hauptproblem? :) Vllt. kann man einen Denkanstoß geben ;)
Vielleicht!
Also ich hab zurZeit vor, ein kleines Replaytool raus zu bringen, dafür müss ich wissen, in welcher Zeile der Name des Spieler 1 steht, dann welches Zeichen der erste Buchstabe ist, soweit bin ich schon.
Nur, ich weiß nicht, wie ich die Zeichen nach den letzten Buchstaben rausschmeiße.
Ich weiß zwar, dass der Accountname in SC2 max. 12 Buchstaben haben kann, kann das aber nicht programmieren.
Naja, heute ist ein neuer Tag, hab manchmal geistesblitze wie das mit den max. Buchstaben.

Ich schreib dann mal hier rein, ob ichs geschafft habe oder nicht!

[OFFTOPIC] Man mal wieder ein Thema wo ich null Ahnung von hätte, wie blickt ihr da bloss durch Oo :respekt, ich würd bei sowas wo ich nur Codes sehe das wandelnde Orakellexika befragen, andere nennen ihn Osbes ^^

Es geht, ich nehm einfach mal an, dass du zur Zeit nicht in der Materie drin bist, wenn du das ein bisschen kannst gehts eigendlich. =D


*Edit: Habs geschafft, neuer Tag, neues Glück, danke Liontiger, hast nen Platz in den Credits!
C#:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using System.IO;
using System.Text.RegularExpressions;

namespace sc2beispiel
{
    public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
        }
        //Credits:  >>Liontiger<< Danke!
        Regex alphabet = new Regex("[a-zA-Z]");
        string sm = "Player: ";
        string spath = @"C:\Mull\test.SC2Replay";
        private void button1_Click(object sender, EventArgs e)
        {
            string[] sfile = File.ReadAllLines(spath);
            for (int i = 0; i < sfile.Length; i++)
            {
                if (i == 2)
                {
                    string szwi = sfile[2];
                    //27: Erster Buchstabe des Spieler_1 Accountname
                    //39: Max. letzter Buchstabe des Spieler_1 Accountname
                    for (int i2 = 27; i2 <= 39; i2++)
                    {
                        if (alphabet.IsMatch(szwi[i2].ToString()))
                        {
                            //Listet die 'gültigen' Werte in eine Listbox
                            listBox1.Items.Add(szwi[i2].ToString());
                            sm = sm + szwi[i2].ToString();
                            MessageBox.Show(i2.ToString() + ": " + szwi[i2].ToString());
                        }
                        
                    }
                    lblLabel.Text = sm;
                    textBox1.Text = sm;
                }
            }
        }

        private void Form1_Load(object sender, EventArgs e)
        {

        }
    }
}
 
Last edited:
Hast du dich diesbezüglich schon mit MPQ beschäftigt?
Ich würde dir in diesem Zusammenhang auch empfehlen eine existierende Bibliothek zu nutzen, da es sonst sicherlich nur unnötigen Entwicklungs- und Wartungsaufwand hervorbringt.

Ich habe dieses Theme im Übrigen erst jetzt gesehen, sonst hätte ich schon früher etwas dazu geschrieben :(
 
Back
Top Bottom