C# :: Aufgabe #83
13 Lösungen

IP Adresse validieren
Anfänger - C#
von MitoG
- 02.01.2015 um 04:38 Uhr
Schreiben sie eine Consolenanwendung die eine IP Adresse als String entgegen nimmt und validieren sie diese.
Nutzen sie dabei nur den Namespace:
"System"
Der String muss als String verarbeitet werden.
Beispiele:
"192.168.0.1" <- True
"255.255.255.255" <- True
"1.1.256.302" <- False
Nutzen sie dabei nur den Namespace:
"System"
Der String muss als String verarbeitet werden.
Beispiele:
"192.168.0.1" <- True
"255.255.255.255" <- True
"1.1.256.302" <- False
Lösungen:

using System; namespace trainYourProgrammer { class MainClass { private static bool isValid(string ip) { string[] parts = ip.Split ('.'); if (parts.Length != 4) //keine 4 Blöcke return false; foreach (string s in parts) { int number; if (!int.TryParse (s, out number)) //keine Zahl return false; if (number < 0 || number > 255) //falscher Wertebereich return false; } return true; } static void Main(string[] args) { Console.Write ("IP eingeben: "); string ip = Console.ReadLine (); Console.WriteLine ("die eingegebene Adresse ist " + (isValid (ip) ? "" : "nicht ") + "gültig"); } } }

// ================================================== // Copyright 2014 (C) , dotLogix // Author: Alexander Schill <alexander@schillnet.de>. // ================================================== namespace ValidateIp { #region Using Directives using System; #endregion internal static class Program { private static void Main(string[] args) { Console.Write("Enter IP: "); var ip = Console.ReadLine(); var parts = ip.Split(".".ToCharArray()); var valid = true; foreach(var part in parts) { int partConvert; if(int.TryParse(part, out partConvert) && partConvert >= 0 && partConvert <= 255) continue; valid = false; break; } Console.WriteLine(valid.ToString()); Console.Read(); } } }

class Program { static void Main(string[] args) { int blockcounter = 0; int block1 = 256; int block2 = 256; int block3 = 256; int block4 = 256; Console.WriteLine("Bitte geben Sie eine IP-Adresse ein:"); string userip = Console.ReadLine(); string[] splitter = userip.Split(new Char[]{'.'}); try { foreach (string s in splitter) { blockcounter++; if (blockcounter == 1) { block1 = Convert.ToInt16(s); } if (blockcounter == 2) { block2 = Convert.ToInt16(s); } if (blockcounter == 3) { block3 = Convert.ToInt16(s); } if (blockcounter == 4) { block4 = Convert.ToInt16(s); } } if ((block1 >= 1 && block1 <= 255) && (block2 >= 0 && block2 <= 255) && (block3 >= 0 && block3 <= 255) && (block4 >= 0 && block4 <= 255)) { Console.WriteLine("Ihre Eingabe entspricht einer gültigen IP-Adresse und lautet {0}.{1}.{2}.{3}", block1.ToString(), block2.ToString(), block3.ToString(), block4.ToString()); } else { Console.WriteLine("Ihre Eingabe \"{0}\" entspricht keiner gültigen IP-Adresse", userip); } } catch { Console.WriteLine("Ungültige Schreibweise ermittelt. Verwenden Sie nur vier Zahlen von 0 - 255, die jeweils durch einen '.' getrennt werden!"); } Console.ReadKey(); } }

namespace IPadresse { class Program { static void Main(string[] args) { Console.WriteLine("Type IP-adress: "); string ip = Convert.ToString(Console.ReadLine()); Console.WriteLine(IsIP(ip)); Console.ReadLine(); } static bool IsIP(string IP) { return System.Text.RegularExpressions.Regex.IsMatch(IP, @"\b((25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)\.){3}(25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)$\b"); } } }

/* * Erstellt mit SharpDevelop. * Benutzer: especk * Datum: 26.01.2015 * Zeit: 15:55 * * Sie können diese Vorlage unter Extras > Optionen > Codeerstellung > Standardheader ändern. */ using System; namespace IP_Adresse_validieren { class Program { public static void Main(string[] args) { Console.WriteLine("Geben Sie die IP-Adresse ein"); string adresse = Console.ReadLine(); string[] bloecke = adresse.Split(new Char[] {'.'}); if(bloecke.Length != 4){Console.WriteLine("Die Adresse muss aus 4 Blöcken bestehen!"); Console.ReadKey();} else{ for (int i = 0; i < bloecke.Length; i++) { if(bloecke[i].Length > 3){ Console.WriteLine("Die IP-Adresse enthält zu viele Zeichen in einem Block"); Console.ReadKey();Environment.Exit(0); } } int b1 = 0; try { for (int b = 0; b <= 3; b++) { b1 = Convert.ToInt32(bloecke[b]); if(b1 > 255 || b1 < 0){ Console.WriteLine("Die IP-Adresse enthält zu große Zahlenbereiche: {0}" , b1 ); Console.ReadKey();Environment.Exit(0); } } Console.WriteLine("Die eingegebene IP-Adresse ist richtig"); Console.ReadKey(); } catch (Exception) { Console.WriteLine("Bitte nur Ziffern von 0-9 eingeben!"); Console.ReadKey(); } }} } }

public static bool Validation(string IP) { try { foreach (string s in IP.Split('.')) Byte.Parse(s); if (IP.Split('.').Length == 4) return true; } catch { } return false; }

enum InternetProtocol : byte { IPv4 = 4, IPv6 = 6 } class Program { static void Main(string[] args) { string Info = "4 \t IPv4 Validation \n" + "6 \t IPv6 Validation \n" + "0 \t Exit \n"; for (char i = 'µ'; i != '0'; Console.Clear(), Console.Write(Info), i = Console.ReadKey().KeyChar) { if (i != '4' & i != '6') continue; Console.Clear(); Console.Write("IPv{0} Validation: ", i); Console.WriteLine("{0}\nPress any key to return..", IpValidation(Console.ReadLine(), (InternetProtocol)i)); Console.ReadKey(); } } public static bool IpValidation(string Address, InternetProtocol Protocol) { try { foreach (string s in Address.Split('.')) Byte.Parse(s); if (Address.Split('.').Length == (byte)Protocol) return true; } catch { } return false; } }
bin mir nicht ganz sicher ob ich die regeln eingehalten habe, aber ich wusste nicht wie man das ohne parsen lösen kann.
C#-Code

using System; namespace IPvalidieren { class Program { static void Main() { string eingabe; int lang, raus, zahl=0, dotzahl, zähler=0, savei=0; int[] no = new int[4]; System.Console.WriteLine("IPv4 Adresse zur Validierung eingeben"); eingabe = System.Console.ReadLine(); lang = eingabe.Length; dotzahl = lang - eingabe.Replace(".", "").Length; for (int i = 0; i != lang; i++) { if (Int32.TryParse(Convert.ToString(eingabe[i]), out raus) || Convert.ToString(eingabe[i]) == "." || lang > 15 || lang < 7 || dotzahl != 3) ; else { System.Console.WriteLine("IPv4 Formatierung ungültig (123.123.123.123), zum beenden ENTER drücken"); System.Console.ReadLine(); } } for (int j = 0; j != 4; j++) { for (int i = 0; i != lang; i++) { if (i == 0) { i += savei; } if (Int32.TryParse(Convert.ToString(eingabe[i]), out raus)) { zahl = zahl * 10 + raus; } else { savei = i + 1; break; } if (zahl > 255 || zahl < 0 ) { System.Console.WriteLine("Zahlenwert ungültig (0-255), zum beenden ENTER drücken"); System.Console.ReadLine(); return; } } no[zähler] = zahl; zähler++; zahl = 0; } foreach (int i in no) { System.Console.Write("{0}.", i); } System.Console.Write("\b validiert."); System.Console.WriteLine(); eingabe = System.Console.ReadLine(); System.Console.WriteLine("zum beenden ENTER drücken"); } } }

public static string ValidiereIP(string IP) { try { foreach (string s in IP.Split('.')) Byte.Parse(s); if (IP.Split('.').Length == 4) return ""; } catch { } return "Ungültige Eingabe"; }

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace IP_Validierung { class Program { static bool IsIP(string[] IP) { if (IP.Length != 4) return false; foreach (string IPBl in IP) { int IPBlock; if (!int.TryParse(IPBl, out IPBlock)) return false; if (IPBlock > 255 || IPBlock < 0) return false; } return true; } static void Main(string[] args) { Console.Write("Geben Sie eine IP ein: "); string[] IP = Console.ReadLine().Split('.'); if (!IsIP(IP)) Console.WriteLine("Ungültige IP"); else Console.WriteLine("Gültige IP"); } } }

using System; namespace ValidateIP { internal class Program { private static void Main(string[] args) { Console.WriteLine("Bitte geben Sie eine gültige IP-Adresse ein."); Console.WriteLine("Die IP-Adresse ist " + (IsIPValid(Console.ReadLine()) ? "gültig!" : "ungültig!")); Console.ReadKey(); } private static bool IsIPValid(string ip) { string[] blocks = ip.Split('.'); if (blocks.Length != 4) return false; foreach (var block in blocks) { int number; if (!int.TryParse(block, out number)) return false; if (number > 255 || number < 1) return false; } return true; } } }

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace testmethoden { class Program { static void Main(string[] args) { while (true) { Console.WriteLine("IP Adresse:"); string IPAdresse = Console.ReadLine(); bool IPYES = true; if (IPAdresse.Length >= 7 && IPAdresse.Length <= 15) { int IPArrayStelle = 0, dotcounter = 0; string[] IPArray = new string[4]; for (int IPStelle = 0; IPStelle <= IPAdresse.Length - 1; IPStelle++) { if (Convert.ToString(IPAdresse[IPStelle]) == ".") { IPArrayStelle++; if (dotcounter >= 4) { KeineIPAdresse(); IPYES = false; break; } dotcounter++; } else if (Convert.ToChar(IPAdresse[IPStelle]) > 47 && Convert.ToChar(IPAdresse[IPStelle]) < 57) { IPArray[IPArrayStelle] = IPArray[IPArrayStelle] + IPAdresse[IPStelle]; } else { KeineIPAdresse(); IPYES = false; break; } } if (IPYES == true) { if (Convert.ToInt32(IPArray[IPArrayStelle]) >= 255 || dotcounter <= 2) { KeineIPAdresse(); IPYES = false; } } } else { KeineIPAdresse(); IPYES = false; } if (IPYES == true) { Console.WriteLine("IP Adresse validiert.\n"); } } } static void KeineIPAdresse() { Console.WriteLine("Das ist keine IP Adresse!\n"); } } }

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; namespace TrainYourProgrammer83 { class Program { static void Main(string[] args) { bool gültig = true; Console.WriteLine("IP-ADRESSENPRÜFUNG"); Console.Write("Geben Sie eine IP-Adresse ein, die auf Gültigkeit überprüft werden soll: "); string eingabeIP = Console.ReadLine(); //prüfen ob nur Zahlen und Punkte vorhanden if(eingabeIP.Length >= 16) { gültig = false; } else { for (int i = 0; i <= eingabeIP.Length-1; i++) { if (!(Char.IsNumber(eingabeIP[i])) && eingabeIP[i] != '.') { gültig = false; } } } //prüfen ob nur Zahlen und Punkte vorhanden ENDE if (gültig) { string[] bloecke = eingabeIP.Split('.'); for (int i = 0; i <= bloecke.Length -1; i++) { //prüfe Anzahl der Ziffern der Dezimalblöcke if (bloecke[i].Length >= 4) { gültig = false; } //prüfe Anzahl der Ziffern der Dezimalblöcke ENDE //prüfe ob 0 an erster Stelle der Dezimalblöcke deren Länge >= 2 if (bloecke[i].Length >= 2) { if (Convert.ToInt32(bloecke[i][0]) == 48) { gültig = false; } } //prüfe ob 0 an erster Stelle der Dezimalblöcke deren Länge >= 2 ENDE //prüfe ob Werte der Dezimalblöcke > 255 if (Convert.ToInt32(bloecke[i]) > 255) { gültig = false; } //prüfe ob Werte der Dezimalblöcke > 255 ENDE } } Console.WriteLine(gültig); Console.ReadKey(); } } }