String-Problem

Status
Nicht offen für weitere Antworten.

Java_Cup

Mitglied
Wie schreibe ich deas Programm, wenn :


Beispiel!:
Bitte geben Sie ihre Emailadresse ein: martin.mustermann@t-online.de!(Beispiel-emailadresse)




Ausgabe:
Benutzername: martin.mustermann
Domainname: t-online.de



Also wennich jetzt eine beliebige Emailadresse eingebe , muss das Programm es so zerlegen , dass der Benutzername den Namen vor dem @ anzeigt und den Domainname nach dem @ anzeigt!

Ich habe es mit substring probiert , aber dies geht nur mit Zahlen und nicht mir @!!

Code:
Als Hilfe steht da irgendwas mit Zeichenketten!

 String Emailadresse=null;


System.out.print("Bitte geben Sie Ihre Emailadresse ein: ");
Emailadresse=stringEingabe();

Emailadresse=Emailadresse.substrin('@')...............................wie??????????????


Code:
static stringEingabe(){          
    String s=" ";
    try{   s= new java.io.DataInputStream(System.in).readLine();{
         catch  (java.io.Exception e){}
        return s;

}

und wie mache ich jetzt die Methoden oder Anweiseunge(Wie immer das auch heißen mag 🙁
 
:bahnhof:

das hilft mir auch nicht weiter, wir müssen das irgendwie mit substring oder index machen

und mache ich das mit dem @ zeichen??
 
Hast du dir die Links mal angesehen?
Mit Pattern kannst du das machen.
Substring benutzt man nur wenn man auch weiß wieviele Zeichen man abschneiden muss
 
Mit Substring würde das etwa so aussehen.
Code:
String mail = "hallo@du.da";
int index = mail.indexOf( "@" );

String name = mail.subString( 0, index );
String rest = mail.subString( index+1 );
 
@Beni ich find Pattern aber besser :wink:

ist zwar komplizierter, aber irgendwann brauchst du's.
Warum also nicht gleich?

Code:
Pattern pat = Pattern.compile("(.*)(@)(.*)");

dann Matcher:

Code:
Matcher mat = pat.compile("e-mail@test.de");

jetzt Matcher anwenden, z.b. damit (API durchlesen welche Methode am besten passt)

Code:
mat.lookingAt();

String anfang = mat.group(1);
String ende = mat.group(3);

Die Gruppen im Matcher beziehen sich auf die Klammern im Pattern.
Pro () eine Gruppe, group(0) ist der ganze String.
 
Code:
 String sMail = "martin.mustermann@t-online.de";
 String[] sArray = sMail.split("@");
 // Danach ist das String-Array so befüllt:
 // sArray[0] = martin.mustermann
 // sArray[1] = t-online.de
 
Hobbit_Im_Blutrausch hat gesagt.:
Also ich würds trotzdem mit nem Token machen!

[NeugierigBin]
Was ist der Grund, dass Du so explizit 'Token' empfiehlst??

Ich denke hier hat jede Lösung seine Daseinsberechtigung und alle Lösungen sind gleich gut.

Kannst Du deine Meinung begründen??
[/NeugierigBin]
 
Bin halt ein kleiner Token-Fan 😀 . War so ziemlich die erste Art, die ich gelernt hab einen String zu teilen :wink: . Ist auch eine von den einfacheren Möglichkeiten dieses Problem zu lösen.
 
tokens sind von anfängern gern genommen weil sie nicht so kompliziert und komplex wie die regex sind... man merkt aber bald, dass regex weit mächtiger sind
 
wieso nicht einfach:
Code:
String email = "blapp@blupp.de";
String[] parts = email.split("@");
System.out.println("name: "+ parts[0]);
System.out.println("domain: "+ parts[1]);
 
wobei sagen muss das die Methoden in String auch das ganze nur an die Pattern klasse weiterleiten.
"Schlimmer noch" - rufst du mehrmals z.b. ein split auf mit dem gleichen Argument, wird immer ein neuer regex compiliert... daher ist es sinnvoller mit der Pattern klasse zu arbeiten und den ausdruck nur einmal zu kompilieren
 
Status
Nicht offen für weitere Antworten.

Zurück
Oben