Laden...

Ersetzung von Buchstaben?!

Letzter Beitrag vor 17 Jahren 6 Posts 1.581 Views
Ersetzung von Buchstaben?!

Moin Leute,

Ich versuche seit einiger Zeit mit Textstrings zu arbeiten. Ich möchte gewisse Buchstaben in einem String ersetzen.

Das Problem ist dass wenn ich z.B

  1. Alle A's mit C ersetzen
  2. Alle C's mit X ersetzen

Da die A's ja in C's umgewandelt werden werden diese dann in X umgewandelt was ich verhindern möchte.

Weil dann wärs ja unlogisch wenn A -> C -> X

Kann ich das irgendwie so schreiben dass alle gleichzeitig ersetzt werden und nicht schon mal bearbeitete noch mal bearbeitet werden?!

Lg!

Hallo apid0x,

das geht mit Regex.Replace in Kombination mit einem MatchEvaluator, der die zu dem gerade gefundenen Zeichen jeweils passende Ersetzung zurückliefert.

herbivore

Hallo,

das geht auch mit "Replace" :

string a1 = "ABCABC";
string a2 = a1.Replace("C","X").Replace("A","C");

Das Problem ist dass wenn ich z.B

  1. Alle A's mit C ersetzen
  2. Alle C's mit X ersetzen
    Da die A's ja in C's umgewandelt werden werden diese dann in X umgewandelt was ich verhindern möchte.

Ersetze doch

  1. Alle C's mit X ersetzen
  2. Alle A's mit C ersetzen

Dann gehts !

Grüße Bernd

Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3

Danke mal für die Antworten.

@Bernd: Ich hab dann aber schon mehr Buchstaben - ich möchte nämlich so ne Art Verschlüsselungsprogramm bauen dass das ABC mit meinem eigenen ABC ersetzt und wieder zurückübersetzt.

@herbi: Gäbs da auch ne andere Lösung als RegEx? Bin da nich so bewandert...

edit:

Hab mal das probiert - aus verschiedenen Tutorialanweisungen zusammengebastelt, nicht lachen - wiegesagt bin kein Regex-Genie 😜

using System;
using System.Collections.Generic;
using System.Text;
using System.Text.RegularExpressions;

namespace vZa
{
    class Program
    {
        public static string ReplaceMethode(Match m)
{
    switch (m.Value)
    {
        case "a":
        return "b";
        break;
        case "b":
        return "a";
        break;
        default:
        return "";
        break;
    }
}
        static void Main(string[] args)
        {
            MatchEvaluator myEvaluator = new MatchEvaluator(ReplaceMethode);
            string ersetzterString = Regex.Replace("abcdef", "-*.*", myEvaluator, RegexOptions.IgnoreCase);
            Console.WriteLine(ersetzterString);
            Console.ReadLine();

        }
    }
}

@Bernd: Ich hab dann aber schon mehr Buchstaben - ich möchte nämlich so ne Art Verschlüsselungsprogramm bauen dass das ABC mit meinem eigenen ABC ersetzt und wieder zurückübersetzt.

Du weisst dass das aber so gut wie keine Sicherheit bietet ?

NET 2.0 bietet doch schon fertige Klassen für sichere Verschlüsselung.

Grüße Bernd

Workshop : Datenbanken mit ADO.NET
Xamarin Mobile App : Finderwille Einsatz App
Unternehmenssoftware : Quasar-3

Ja das weiss ich auch, ist nur für ein Schulprojekt - soll nix sicheres sein 🙂