Zum Inhalt springen

C# - Platzhalter in string ermitteln


Empfohlene Beiträge

Geschrieben

Hallo zusammen,

habe folgendes Problem:

Ich habe mehrere strings, die unterschiedlichen Text enthalten.

Unter anderem haben die strings Platzhalter die folgendermaßen aussehen:

%xxx%

Es kann vorkammen, dass in einem String auch mehrere Platzhalter sind:

z.B. "Dies ist der String mit dem Namen %name% und der Nummer %nr%."

Jetzt will ich den String auf die Platzhalter überprüfen und diese in ein DatagridView schreiben.

Hat jemand eine Idee, wie ich jetzt %name% und %nr% rausfiltern kann??

Vielen Dank!

Geschrieben

In C# gibt es schon Platzhalter.

Bsp.:

string resource = "Dies ist der String mit dem Namen {0} und der Nummer {1}.";

Nun willst du das ganze ausgeben:

Console.WriteLine(String.Format(resource, "Müller", 1);

Gaanz einfach ohne Regex =)

Geschrieben
Hat nur nix mit der Fragestellung zu tun...

durchaus aber womöglich weiß der jenige nicht, dass es diese Funktionalität gibt und er legt eigene Platzhalter in Resourcen an, was umständlich wäre.

Geschrieben
durchaus aber womöglich weiß der jenige nicht, dass es diese Funktionalität gibt und er legt eigene Platzhalter in Resourcen an, was umständlich wäre.

Ich glaube nicht, dass der Themenersteller diese Strings inkl. dem Platzhalter selber erstellt. Es gibt genug anderen Formate / Verfahren, die z.B. das Prozentzeichen als Platzhalter nutzen.

Geschrieben
Ich glaube nicht, dass der Themenersteller diese Strings inkl. dem Platzhalter selber erstellt. Es gibt genug anderen Formate / Verfahren, die z.B. das Prozentzeichen als Platzhalter nutzen.

:rolleyes: Summa summarum wissen wir nicht was der Threadersteller genau macht :hells:

  • 2 Wochen später...
Geschrieben

Hallo,

hier ist der Threadersteller. Sorry, wenn ich jetzt erst antworte, hatte zwischenzeitlich ein anderes Problem gehabt.

Also ich hab folgendes mal getestet:

// Define a regular expression for currency values.

                System.Text.RegularExpressions.Regex rx = new System.Text.RegularExpressions.Regex(@"[%]([^%]+)[%]");


                // Define some test strings.

                string[] zeile1 = { "-42", "es geht um %19.99% siehst du", "%ertge%", "0.001", "100 USD" };


                // Check each test string against the regular expression.

                foreach (string test in zeile1)

                {

                    if (rx.IsMatch(test))

                    {

                        Console.WriteLine("{0} is a currency value.", test);                       

                    }

                    else

                    {

                        Console.WriteLine("{0} is not a currency value.", test);

                    }

                }

Leider wird die ganze Zeile als Ergebnis ausgegeben, also "es geht um %19.99% siehst du" und "%ertge%" kommt als Ergebnis raus. Das ist ja schon mal ein Teilerfolg, aber ich brächte nur "%19.99% und "%ertge%".

Um die Problemstellung nochmal darzustellen: Ich habe einen Text, wo ich selber Platzhalter habe. Wie z.B. "Der Name des Mitarbeiters in Abteilung %abt% ist %name%."

Jetzt möchte ich, dass mir %abt% und %name% in einem Datagrid angezeigt wird. Platzhalter sind variabel und zeichnen sich durch die Prozentzeichen %xxx% aus. Ich möchte also alles in einem String auslesen was mit %-Zeichen umklammert ist.

Geschrieben

Moin!

Haettest Du die RegEx, die ich in der ersten Antwort geschrieben habe verwendet, dann haette es funktioniert.

Ich habe Deinen Text:

"Der Name des Mitarbeiters in Abteilung %abt% ist %name%."

mit der o.g. Regex

([%])[^%]*\1

auf dieser Seite

regexe - Reguläre Ausdrücke online testen

ausprobiert und habe %abt% und %name% als Ergebnisse bekommen.

Mit der alternativen Expression in der Nachricht nach mir hat es nur das erste Element gegeben.

Dein Kommentar

Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung wiederherstellen

  Nur 75 Emojis sind erlaubt.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

Fachinformatiker.de, 2024 by SE Internet Services

fidelogo_small.png

Schicke uns eine Nachricht!

Fachinformatiker.de ist die größte IT-Community
rund um Ausbildung, Job, Weiterbildung für IT-Fachkräfte.

Fachinformatiker.de App

Download on the App Store
Get it on Google Play

Kontakt

Hier werben?
Oder sende eine E-Mail an

Social media u. feeds

Jobboard für Fachinformatiker und IT-Fachkräfte

×
×
  • Neu erstellen...