Hallo Habe ein kleines Problem und werde der Sache nicht her.
Hab 2 Strings eingelesen und hab sie anhand ihrer Satzstellung identisch gemacht. Aus Hallowiegehts wird Hallo wie gehts.
Jetzt will ich wie im anderen Thema schon diskutiert die einzelnen Wörter vergleichen aber es funktioniert nicht er vergleicht hallo mit wie und wie mit wie
Kann mir jemand helfen?
hab auch ein bischen Code für eich der Rote bereich ist denke ich der Wo der Fehler liegt!
Hab 2 Strings eingelesen und hab sie anhand ihrer Satzstellung identisch gemacht. Aus Hallowiegehts wird Hallo wie gehts.
Jetzt will ich wie im anderen Thema schon diskutiert die einzelnen Wörter vergleichen aber es funktioniert nicht er vergleicht hallo mit wie und wie mit wie
Kann mir jemand helfen?
hab auch ein bischen Code für eich der Rote bereich ist denke ich der Wo der Fehler liegt!
Code:
//Versuch Satzstellung zu finden//
using System;
using System.Collections.Generic;
using System.Collections;
using System.Linq;
using System.Text;
using System.Text.RegularExpressions;
namespace Testapp
{
static class MinEditDistanz //Levenshtein Algorithmus zu Bestimmung der MIN-Edit-Distanz
{
public static int Compute(string s, string t)
{
int n = s.Length;
int m = t.Length;
int[,] d = new int[n + 1, m + 1];
if (n == 0)
{
return m;
}
if (m == 0)
{
return n;
}
for (int i = 0; i <= n; d[i, 0] = i++)
{
}
for (int j = 0; j <= m; d[0, j] = j++)
{
}
for (int i = 1; i <= n; i++)
{
for (int j = 1; j <= m; j++)
{
int cost = (t[j - 1] == s[i - 1]) ? 0 : 1;
d[i, j] = Math.Min(
Math.Min(d[i - 1, j] + 1, d[i, j - 1] + 1),
d[i - 1, j - 1] + cost);
}
}
return d[n, m];
}
} //***
class Program
{
static void Main()
{
Console.ForegroundColor = ConsoleColor.White; //Textfarbe ändern
int abr = 0; //Variable für Schleifenabbruch
string Leer= " ";
char[] leer=Leer.ToCharArray();
while (abr < 10)
{
int F = 0; //Fehlerzähler
string x = Console.ReadLine(); //Einlesen 1.String
string y = Console.ReadLine(); //Einlesen 2.String (eingebener String)
string X = Regex.Replace(x, "(\\s+)", " "); //Doppelte Leerzeichen entfernen
string Y = Regex.Replace(y, "(\\s+)", " "); //-->wird später nur beim eingegebenen String benötigt
string[] sX = X.Split(' '); //Stringsplit
ArrayList sXList = new ArrayList(); //Strings in Arraylist speichern
foreach (string s in sX)
sXList.Add(s);
int sXCount = sXList.Count; //Variable für Arraylistlänge
for (int iX = 0; iX <= sXCount-1; iX++) //Schleife Für jedes Arraylistelememt sXList
{
string s = sXList[iX].ToString(); //Object aus Arraylist in String konvertieren
int istringX = X.IndexOf(s); //Position des Musters aus Arraylist im 1.String
int istringY = Y.IndexOf(s); //Position des Musters aus Arraylist im 1.String
//Hier müssen Unterscheidungen getroffen werden!!!!
if (istringY > -1) //Wenn Muster gefunden(postition größer -1)
{
if ((istringY < istringX)|(istringY>istringX)) /*Wenn Position Muster2 ist kleiner Muster1
Oder Pos. Muster2 größer Pos. Muster1*/
{
Y = Y.Insert(istringY, " "); //Füge Leerzeichen an Position von Muster 2 ein
Y = Y.TrimStart(leer);
Y = Y.TrimEnd(leer);
Y = Regex.Replace(Y, "(\\s+)", " "); //Doppelte Leerzeichen entfernen
string[] sY = Y.Split(' '); //Stringsplit
ArrayList sYList = new ArrayList(); //Verbesserter String in Arraylist einfügen
foreach (string t in sY)
sYList.Add(t);
int sYCount = sYList.Count; //Variable für Arraylistlänge
for (int iY = 0; iY <= sYCount - 1; iY++)
{
string t = sYList[iY].ToString();
Console.Write(t);
Console.Write(s);
}
}
}
}
Console.ForegroundColor = ConsoleColor.Yellow;
Console.WriteLine(Y);
Console.ForegroundColor = ConsoleColor.White;
Console.WriteLine("Insgesamt:{0} Fehler!", F);
abr++;
}
Console.ForegroundColor = ConsoleColor.Cyan;
Console.WriteLine("Zum Abbrechen Enter Drücken!"); //Abbruch
Console.ReadLine();
}
}
}