Thema: [C#] Channellist parsen
-
31.01.2011, 22:01 #1
- Registriert seit
- 09.11.2011
- Beiträge
- 121
Thanked 129 Times in 46 Posts[C#] Channellist parsen
Hi,
N00B hat nach dem Parser gefragt, jetzt gibt's ihn wieder für euch.
Macht damit, was ihr wollt, z.B. Werbebot.
PHP-Code:internal class Parser
{
// Globale Variablen
private static string ChannelName = String.Empty;
private static int ChannelCount = 2;
/// <summary>
/// Erstellt eine ChannelList
/// </summary>
/// <param name="input">Die Daten vom Server (b-Token)</param>
/// <returns>ChannelList</returns>
internal static Channel[] ParseChannelList(string input)
{
// Splitte die Daten "-\0"
string[] channelListParameters = input.Split(new string[] { "-\0" }, StringSplitOptions.RemoveEmptyEntries);
// Initalisiere eine neue Liste (Channel)
List<Channel> channelList = new List<Channel>();
// Gehe jeden Eintrag durch
foreach (string parameter in channelListParameters)
// Füge den Channel (ParseChannel gibt einen Channel zurück) in unsere List hinzu
channelList.Add(ParseChannel(parameter));
// Gebe die Liste als Array zurück
return channelList.ToArray();
}
/// <summary>
/// Erstellt einen Channel aus den dazugehörigen Parametern
/// </summary>
/// <param name="parameters">Die Channelparameter</param>
/// <returns>Channel</returns>
private static Channel ParseChannel(string parameters)
{
// Falls die aktuelle Daten mit b\0 anfangen (am Anfang: b\00-8-15...)
if (parameters.StartsWith("b\0"))
// entfernen
parameters = parameters.Replace("b\0", String.Empty);
// Wir splitten jetzt das \0
string[] channelParameters = parameters.Split('\0');
/* In der ersten Stelle im Array befindet sich der Channelname und die Anzahl der Chatter, getrennt durch "\n"
* Dann splitten wir das "\n" und die erste Stelle davon ist der Channelname
*/
string channelname = channelParameters[0].Split('\n')[0];
// Wenn der ChannelName " entspricht
if (channelname == """)
{
// Dann kriegt er den ursprünglichen Channelnamen und die Nummer
channelname = String.Format("{0} {1}", ChannelName, ChannelCount);
// erhöhe die Nummer um 1
ChannelCount++;
}
// Wenn der ChannelName aber " enthält
else if (channelname.Contains("""))
/* Dann sieht es so aus: "5
* Das " ersetzen wir, erhalten somit die Nummer und der ChannelName ist der ursprüngliche Name und die Nummer
*/
channelname = String.Format("{0} {1}", ChannelName, channelname.Replace(""", String.Empty));
// Wenn es ein neuer Channel ist, der mit dem alten nichts zu tun hat
else if (channelname != ChannelName)
{
// Setze die Nummer auf den Standartwert
ChannelCount = 2;
ChannelName = channelname;
}
// Ansonsten
else
{
// Globale Variable erhält den aktuellen Channelnamen
ChannelName = channelname;
}
// Anzahl der Chatter bestimmen (s.o.)
int count = int.Parse(channelParameters[0].Split('\n')[1]);
// Wenn ein Channel voll ist, wird in der vierten Stelle des Arrays das entsprechende Bild geliefert und wir prüfen, ob sich ein Teil davon dort befindet
bool isFull = channelParameters[3].Contains("full");
// Wenn im Channel mehr als 1 Chatter ist, ist er nicht leer, ansonsten schon
bool isEmpty = !(count > 1);
// Format, wie der Channel angezeigt wird (i = italic, p = plain)
char channelAppearanceFormatter = char.Parse(channelParameters[1]);
// neue Liste initialisieren
List<string> images = new List<string>();
// Pfad zur List hinzufügen, wenn es "pics" enthält
if (channelParameters[3].Contains("pics"))
images.Add(channelParameters[3]);
// Gebe Channel zurück
return new Channel(channelname, count, isFull, isEmpty, channelAppearanceFormatter, images);
}
}
internal struct Channel
{
private string _channelname;
private int _chatter;
private bool _isFull;
private bool _isEmpty;
private char _formatter;
private List<string> _images;
public string ChannelName { get { return _channelname; } }
public int Chatter { get { return _chatter; } }
public bool isFull { get { return _isFull; } }
public bool isEmpty { get { return _isEmpty; } }
public char channelAppearanceFormatter { get { return _formatter; } }
public List<string> Images { get { return _images; } }
public Channel(string name, int chatter, bool full, bool empty, char formatter, List<string> channelImages)
{
_channelname = name;
_chatter = chatter;
_isFull = full;
_isEmpty = empty;
_formatter = formatter;
_images = channelImages;
}
}
MfG
Ähnliche Themen
-
VB.Net Json String richtig parsen???
Von soulreafer im Forum .NetAntworten: 1Letzter Beitrag: 06.07.2013, 17:15 -
[PHP] Umlaute parsen
Von Pwned im Forum PHPAntworten: 6Letzter Beitrag: 29.12.2012, 11:44 -
Befehle "parsen"
Von Frankfurt am Main im Forum Knuddels AllgemeinAntworten: 2Letzter Beitrag: 22.10.2012, 15:32 -
:-Token (Module) parsen/schreiben
Von Brainy im Forum SourcecodeAntworten: 3Letzter Beitrag: 11.07.2012, 20:01
Diese Seite nutzt Cookies, um das Nutzererlebnis zu verbessern. Klicken Sie hier, um das Cookie-Tracking zu deaktivieren.