|
You last visited: Today at 00:35
Advertisement
C# aus Textdatei lesen
Discussion on C# aus Textdatei lesen within the .NET Languages forum part of the Coders Den category.
10/27/2013, 21:15
|
#1
|
elite*gold: 0
Join Date: Jan 2013
Posts: 41
Received Thanks: 2
|
C# aus Textdatei lesen
Hallo,
Ich möchte das für jeden Buchstaben der eingegeben wird, der zugeordnete Buchstabe Ausgegeben wird. Wie kann ich das mit einer Textdatei realisieren?
Quote:
|INPUT | a b c d e f g h i j k l m n o p q r s t u v w x y z
|OUTPUT| j k h i n o l m r s p q v w t u z G b c J a f g d e
|
z.B mit dieser Tabelle, für ein eingegebenes "a" soll ein "j" ausgegeben werden.
Hoffe jemand kann mir behilflich sein.
|
|
|
10/27/2013, 21:31
|
#2
|
elite*gold: 0
Join Date: Feb 2013
Posts: 1,137
Received Thanks: 869
|
Dafür eignet sich eine Map sehr gut. Solch eine Datenstruktur lässt sich bestimmt auch unter .NET finden.
|
|
|
10/27/2013, 21:36
|
#3
|
elite*gold: 0
Join Date: Jan 2013
Posts: 41
Received Thanks: 2
|
Meinst du sowas hier ?
|
|
|
10/27/2013, 21:47
|
#4
|
elite*gold: 0
Join Date: Feb 2013
Posts: 1,137
Received Thanks: 869
|
Genau, Dictionary wäre ein passender Container.
Allerdings mal ne Frage nebenbei: Gehts um die Caesar-Verschlüsselung?
|
|
|
10/27/2013, 21:58
|
#5
|
elite*gold: 0
Join Date: Jan 2013
Posts: 41
Received Thanks: 2
|
Nein, es geht um eine Übersetzung von zwei Fraktionssprachen in einem Spiel. Verstehe nur nicht, wie ich das auf meine Tabelle anwenden soll.
|
|
|
10/28/2013, 00:38
|
#6
|
elite*gold: 0
Join Date: Apr 2010
Posts: 10,291
Received Thanks: 3,611
|
Code:
public static string Translate(string text)
{
var from = "abcdefghijklmnopqrstuvwxyz";
var to = "jkhinolmrspqvwtuzGbcJafgde";
var ret = new StringBuilder();
foreach (var l in text)
{
int index;
for (index = 0; index <= from.Length; index++)
if (index == from.Length || from[index] == l)
break;
ret.Append(index != from.Length ? to[index] : l);
}
return ret.ToString();
}
|
|
|
10/28/2013, 00:41
|
#7
|
elite*gold: 0
Join Date: Jan 2013
Posts: 41
Received Thanks: 2
|
Danke dir, die Methodik war mir noch nicht bekannt.
|
|
|
10/28/2013, 01:03
|
#8
|
elite*gold: 724
Join Date: Mar 2011
Posts: 10,480
Received Thanks: 3,319
|
Quote:
Originally Posted by Shawak
[zur Übersichtlichkeit lasse ich den Code weg]
|
Das ergibt ne Laufzeit von len(text) * len(from), eine Map, wie von Schlüsselbein vorgeschlagen, dürfte mit len(text) * log2(len(from)) bei längeren Texten wesentlich effektiver sein.
auf die Schnelle umgesetzt:
Code:
public static string Translate(string text)
{
var fromTo = new Dictionary<char, char>()
{
{'a', 'j'},
{'b', 'k'},
{'c', 'l'},
//usw...
};
var ret = new StringBuilder();
foreach (char l in text)
{
if (fromTo.ContainsKey(l))
{
ret.Append(fromTo[l]);
}
}
return ret.ToString();
}
Das Dictionary kann man sicher auch noch komfortabel serialisieren, dann kann man das auch in einer Textdatei bearbeiten.
|
|
|
10/28/2013, 01:34
|
#9
|
elite*gold: 0
Join Date: Jan 2013
Posts: 41
Received Thanks: 2
|
Es muss nicht zwinged eine Textdatei sein. Habe das Programm jetzt soweit das es tut was es soll, muss nurnoch überprüfen, ob es auch richtig übersetzt.
|
|
|
10/28/2013, 01:43
|
#10
|
elite*gold: 0
Join Date: Apr 2010
Posts: 10,291
Received Thanks: 3,611
|
Ich war mal so frei:
Code:
public static string Translate(string text, bool includeUntranslateable = true)
{
var fromTo = new Dictionary<char, char>()
{
{'a', 'j'},
{'b', 'k'},
{'c', 'h'},
{'d', 'i'},
{'e', 'n'},
{'f', 'o'},
{'g', 'l'},
{'h', 'm'},
{'i', 'r'},
{'j', 's'},
{'k', 'p'},
{'l', 'q'},
{'m', 'v'},
{'n', 'w'},
{'o', 't'},
{'p', 'u'},
{'q', 'z'},
{'r', 'G'},
{'s', 'b'},
{'t', 'c'},
{'u', 'J'},
{'v', 'a'},
{'w', 'f'},
{'x', 'g'},
{'y', 'd'},
{'z', 'e'},
};
var ret = new StringBuilder();
foreach (var l in text)
if (fromTo.ContainsKey(l))
ret.Append(fromTo[l]);
else if (includeUntranslateable)
ret.Append(l);
return ret.ToString();
}
}
|
|
|
10/28/2013, 01:51
|
#11
|
elite*gold: 0
Join Date: Jan 2013
Posts: 41
Received Thanks: 2
|
Danke dir, ich darf davon morgen 4 Stück machen, da jenachdem welcher Buchstabe kommt, ich in eine andere Tabelle Springen muss in der Wieder andere Buchstaben zugeordnet werden. Hat jemand einen Tipp wie ich das möglichst einfach realisieren kann? Sonst müsste man ja if abfragen machen und dann in die nâchste. tabelle verweisen.
|
|
|
10/28/2013, 02:02
|
#12
|
elite*gold: 0
Join Date: Apr 2010
Posts: 10,291
Received Thanks: 3,611
|
Code:
static void Main(string[] args)
{
var dict1 = DictionaryFromStrings(
"abcdefghijklmnopqrstuvwxyz",
"jkhinolmrspqvwtuzGbcJafgde"
);
var dict2 = DictionaryFromStrings(
"abcdefg",
"1234567"
);
var input = Console.ReadLine();
Console.WriteLine("Dict1: " + Translate(dict1, input));
Console.WriteLine("Dict2: " + Translate(dict2, input));
Console.ReadKey();
}
public static Dictionary<char, char> DictionaryFromStrings(string from, string to)
{
var ret = new Dictionary<char, char>();
for (int i = 0; i < from.Length; i++)
ret.Add(from[i], to[i]);
return ret;
}
public static string Translate(Dictionary<char, char> dictionary, string text, bool includeUntranslateable = true)
{
var ret = new StringBuilder();
foreach (var l in text)
if (dictionary.ContainsKey(l))
ret.Append(dictionary[l]);
else if (includeUntranslateable)
ret.Append(l);
return ret.ToString();
}
|
|
|
10/28/2013, 18:05
|
#13
|
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,904
Received Thanks: 25,394
|
snow, du hast da nicht 100%ig Recht. len(text)*len(from) wäre der Worst-Case. Im Durchschnitt könnte man also (wenn man jetzt mal von Häufigkeitsverteilungen von bestimmten Buchstaben in einer Sprache absieht) von len(text)*len(from)*1/2 ausgehen.
Ob ein Dictionary nur im Avarage-Case die Laufzeit log2(n) hat oder auch Worst-Case, weiß ich gerade nicht.
|
|
|
10/28/2013, 18:53
|
#14
|
elite*gold: 724
Join Date: Mar 2011
Posts: 10,480
Received Thanks: 3,319
|
Quote:
Originally Posted by MrSm!th
snow, du hast da nicht 100%ig Recht. len(text)*len(from) wäre der Worst-Case. Im Durchschnitt könnte man also (wenn man jetzt mal von Häufigkeitsverteilungen von bestimmten Buchstaben in einer Sprache absieht) von len(text)*len(from)*1/2 ausgehen.
Ob ein Dictionary nur im Avarage-Case die Laufzeit log2(n) hat oder auch Worst-Case, weiß ich gerade nicht.
|
Gut, dann nehmen wir die Groß-O-Darstellung, dann habe ich Recht.
Klar ist das Worst-Case, O(len(text)*len(from)) entspricht dann aber auch O(len(text)*len(from)*1/2). Passt schon irgendwie
Ich weiß nicht, wie .NET das Dictionary intern aufbaut, sollten sie einen Binary-Tree verwenden, dürfte O(log2(n)) soweit passen. Sollten sie ne Hashtable verwenden.. nunja, Hashtables sind böse.
Letztendlich wird das ja auch egal sein, ich denke nicht, dass man das während der Ausführung wirklich merkt. Dictionaries sind allerdings cooler als diese doofen for-Schleifen.
|
|
|
10/28/2013, 21:37
|
#15
|
elite*gold: 0
Join Date: Jan 2013
Posts: 41
Received Thanks: 2
|
So ich hab mal ein bischen rumgebastelt, jedoch komm ich auf keine Lösung dafür, wie ich zwischen den Tabellen springen kann.
Quote:
Initial letter:
If you want to say: a b c d e f g h i j k l m n o p q r s t u v w x y z
Type..............: i h k j m l o n q p s r u t w v y x a z c b e d g f
Then go to table..: 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 1 2 1 1 1 1 1 1
OR type...........: O N Q P S R U T W V Y X A Z C B E D G F I H K J M L
Then go to table..: 1 1 1 1 1 1 1 1 1 1 1 1 3 1 3 3 3 3 3 3 3 3 3 3 3 3
Table 1
If you want to say: a b c d e f g h i j k l m n o p q r s t u v w x y z
Type..............: e d g f i h k j m l o n q p s r u t w v y x a z c b
Then go to table..: 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 1 2 1 1
OR type...........: K J M L O N Q P S R U T W V Y X A Z C B E D G F I H
Then go to table..: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 3 1 3 3 3 3 3 3 3 3
Table 2
If you want to say: a b c d e f g h i j k l m n o p q r s t u v w x y z
Type..............: d c f e h g j i l k n m p o r q t s v u x w z y b a
Then go to table..: 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 1 1
OR type...........: J I L K N M P O R Q T S V U X W Z Y B A D C F E H G
Then go to table..: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 3 3 3 3 3 3 3 3
Table 3
Type..............: f e h g j i l k n m p o r q t s v u x w z y b a d c
Then go to table..: 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 2 1 1 1 1
OR type...........: L K N M P O R Q T S V U X W Z Y B A D C F E H G J I
Then go to table..: 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 1 3 3 3 3 3 3 3 3 3 3
|
Ich muss jenachdem welcher Buchstabe eingegeben wird, in der nächsten Tabelle weitermachen nur weiss ich nicht wie ich Prüfen kann welcher Buchstabe dazugehört, klar if-abfragen aber da tipp ich mir ja nen wolf.
|
|
|
|
|
Similar Threads
|
[Buying] Textdatei aus survey DL
08/24/2013 - Trading - 1 Replies
Hab hier nen Link mit einer Textdatei, wo ich leider nicht rankomme .
Zahle 5 egold für den Inhalt dieses Dokumentes.
Hier der Link: CleanFiles Download File: Password-bf3.txt
Schickt mir dann einfach einen Traderequest oder nen Treasurelink.
|
[S]Textdatei [B] e*G
03/19/2013 - elite*gold Trading - 0 Replies
Und zwar handelt es sich hier um ein Deckblatt für ein Portfolio.
Habe die PSD, hintergrund ist festgelegt.
Da muss nur der Satz "Meine Gesundheit und eine meiner Infektionskrankheiten, die ich hatte" rein.
Einen einfachen text kann ich auch machen, er sollte natührlich professionell aussehen, Schatten und alle anderen Spielereien sind erwünscht.
Außerdem soll er zum Hintergrund passen und nicht alles überdecken
Meldet euch in Skype für mehr info's
|
Name aus Textdatei lesen
03/12/2012 - AutoIt - 6 Replies
Hey,
ich suche den Script oder den Befehl damit autoit aus einer offen Text datei sich aus einer bestimmt zeile den namen nimmt und woanders eintippt. Da es glaub ich so schwer zu verstehen ist hier mal ein kurzes video zu meinem Problem:
(habe versucht etwas zu finden nur weiß ich ja nicht einmal genau wie man so etwas nennt.. deswegen frag ich mal eben schnell nach, seit mir nicht böse (; )
http://www.youtube.com/watch?v=9_kkdqgNhm4
€.: Mir ist grad eingefallen das bei meinem...
|
All times are GMT +2. The time now is 00:35.
|
|