String zerlegen?

Status
Nicht offen für weitere Antworten.
T

Tine

Gast
Hallo,

ich habe einen String, in diesem kommt ein Ausdruck in ( ) vor
z.B.


String s = Hallo (Frank)

Jetzt würde ich gern "Frank" da in () aus dem String extrahieren. Habe mal was von RegulärenAusdrücken gelesen, komme damit aber nicht ganz klar.

Vielleicht kann mir jemand auf die Sprünge helfen.

THX
 

Soqinho

Mitglied
Hey hey,

wenn in dem String nur genau ein (Frank) Ausdruck vorkommt, kannst du doch die indexOf Funktion von String verwenden, dann die "Klammer auf" und die "Klammer zu" suchen und dann damit mit der substring Methode von String dein gewünschtes Wort extrahieren ...

Also pseudocodemäßig so ...

Code:
String string = new String("Hallo (Frank)");

int klammerBegin = string.indexOf("(");
int klammerEnd  = string.indexOf(")");

string = string.substr(klammerBegin+1, klammerEnd);

MfG
Soqinho[/code]
 

mu

Aktives Mitglied
Google dir mal - Regex (Pattern/Matcher)

hab das irgendwann mal geschrieben
Code:
public class TestString extends JFrame
{
	
	private static Pattern loginPattern;
	private static Matcher loginMatcher;
	private static String loginOutput;

	
	private JTextArea textArea;
	
	public TestString()
	{
		super();
		setTitle("Regex Uebung");
		setLayout(new FlowLayout());
		setSize(150,210);
		
		textArea = new JTextArea(10,10);
		add(textArea);
		
		loginPattern = Pattern.compile("bambam");
      loginMatcher = loginPattern.matcher("bambam");
      loginOutput = loginMatcher.replaceAll("");
    	
      textArea.setText(loginOutput);
	}

    public static void main(String[] args)
    {
    	TestString frame = new TestString();
    	frame.setVisible(true);
    }
}
 

Maeher

Bekanntes Mitglied
Für diesen Fall würde das heißen:
Code:
String frank = s.substring( s.indexOf( "(" ) + 1 , s.indexOf( ")" ) );
 

0x7F800000

Top Contributor
Code:
import java.util.regex.*;
...
String str="Hallo(Frank)";
Pattern p=new Pattern.compile(".*\\((.*)\\)");
Matcher m=p.matcher(str);
if(m.matches){
    System.out.println(m.group(1));
}
mit so etwas dürfte es gehen, den string "Frank" aus den klammern rauszuholen.

@mu: was ist das und wozu soll ein pattern "bambam" gut sein? ???:L
 

André Uhres

Top Contributor
Code:
package demo;
/*
 * RegexDemo.java
 */
import java.util.regex.*;

public class RegexDemo {

    public RegexDemo() {
        String str = "Hallo (Frank)";
        Pattern regex = Pattern.compile("\\((.*?)\\)");
        Matcher matcher = regex.matcher(str);
        while (matcher.find()) {
            System.out.println(matcher.group(1));
        }
    }

    public static void main(final String[] args) {
        new RegexDemo();
    }
}
 

Kopf411

Mitglied
Also ich hab jetzt mal grob durch die ganzen Foren hindurch gesucht, doch nie was gefunden (oder übersehen) was mir hilft. Ich will im Prinzip auch nur aus einer Variablen zwei Zahlen auslesen.

z.B.

Wenn ich eingib:

5646 88889


Dann soll er bis zum Lehrzeichen die Zahlen in die var. Zahl1 schieben und die Zahl dannach eben in var. Zahl2 schieben.

Die Frage is bestimmt schon mal aufgetaucht doch in der großen Menge hab ichs leider nicht gefunden bzw. übersehen :( .

Vielen Dank im vorraus fürs Helfen :toll:

Grüßle

Kopfi
 

Marco13

Top Contributor
StringTokenizer st = new StringTokenizer(eingabe);
int a = Integer.parseInt(st.nextToken());
int b = Integer.parseInt(st.nextToken());

Exceptionhandling musst du selbst machen.
 

Kopf411

Mitglied
Ähm ich bein leider erste ein Anfänger (Drum schreib ich auch hier rein)
Kannst du das vielleicht noch n bisschen ausführlicher beschreiben

Vielen Dank

Grüßle
Kopfi
 

Marco13

Top Contributor
Code:
import java.util.*;

class WarumMachIchDasEigentlich
{
    public static void main(String args[])
    {
        String eingabe = "5646 88889";
        StringTokenizer st = new StringTokenizer(eingabe);
        int a = Integer.parseInt(st.nextToken());
        int b = Integer.parseInt(st.nextToken());
        System.out.println(a);
        System.out.println(b);
    }
}
 

André Uhres

Top Contributor
public String[] split(String regex)
Spaltet diese Zeichenkette bei den Treffern des gegebenen regulären Ausdruckes auf.
Rechtsbündige leere Zeichenketten sind nicht in dem resultierenden Array eingeschlossen.


Beispiel
Die Zeichenkette "boo:and:foo" z.B. erbringt die folgenden Resultate mit diesen Ausdrücken:
Code:
Regex Resultat
:     {"boo", "and", "foo"} 
O     {"b", "", ":and:f"}

Parameter: regex - der abgrenzende reguläre Ausdruck.
Rückgabe: das Array der Zeichenketten berechnet durch das Aufspalten dieser Zeichenkette
bei den Treffern des gegebenen regulären Ausdruckes.
 

Kopf411

Mitglied
Marco13 hat gesagt.:
Code:
import java.util.*;

class WarumMachIchDasEigentlich
{
    public static void main(String args[])
    {
        String eingabe = "5646 88889";
        StringTokenizer st = new StringTokenizer(eingabe);
        int a = Integer.parseInt(st.nextToken());
        int b = Integer.parseInt(st.nextToken());
        System.out.println(a);
        System.out.println(b);
    }
}

Und wie kann ich sagen, dass das Programm mir zwischen den Zahlen ein z.b. + oder / auslesen soll?
Wär nett wenn einer mir den Zitierten code erweitern könnte

Mit freundlichen Grüßen

Kopf
 

Kopf411

Mitglied
Also bist jetzt hat alles super geklappt. :toll:
Nur, ich will jetzt was neues ausprobieren und weis nicht wie ich da ran gehen soll.
In meinem Mini-Taschenrechner kann ich nur eine Eingabe wie folgt machen:

Zahl1 Opperator Zahl2 (Dabei muss immer ein Leerzeichen zwischen drin sein)

Nun ist meine Frage wie ich dies abwenden kann, um alles, ohne Leerzeichen, eintippen zu können.

Hier ist der Code von meiner Eingabe:

Code:
//------------------------------Eingabe----------------------------------------				
				System.out.print("Gebe Zahle1 Opperator Zahl2 ein: ");
				zahl =Konsolenabfrage.readLine();

//				Splitten
				
		        StringTokenizer st = new StringTokenizer(zahl);
		        int zahl1 = Integer.parseInt(st.nextToken());
		        String operator = st.nextToken();
		        int zahl2 = Integer.parseInt(st.nextToken());

Würd mich freuen wenn ihr mir weiter helfen könntet.

Mit freundlichen Grüßen

Kopf
 
M

MiDniGG

Gast
Hab jetzt keine Lust drüber nachzudenken. Deshalb nur en Ansatz. Schau einfach in dem String nach ob und wo eben eins der möglichen OperatorenZeichen ist und dann eben mit substring oder was es da bei StringTokenizer eben gibt :)
 

André Uhres

Top Contributor
MiDniGG hat gesagt.:
..was es da bei StringTokenizer eben gibt :)
Bei StringTokenizer gibt's dies:
StringTokenizer is a legacy class that is retained for compatibility reasons although its use is discouraged in new code.
It is recommended that anyone seeking this functionality use the split method of String or the java.util.regex package instead.

:wink:
 

Kopf411

Mitglied
MiDniGG hat gesagt.:
Hab jetzt keine Lust drüber nachzudenken.

Wenn du keine Lust hast, nachzudenken, dann bist du meines Erachtens hier falsch, denn in der Programmierung muss mann nachdenken, und das weis sogar ich als totaler Anfänger.

Ich habe nicht umsonst meine Code reinkopiert.
Es wäre schön wenn mir jemand eine Lösung (in Form eines Cods) vorschlagen würde, natürlich nur unter der Forraussetzung auch mal Nachdenken zu wollen.

Mit freundlichen Grüßen

Kopf
 
M

MiDniGG

Gast
Ja. Sorry. So meinte ich es auch nicht. Wollte mich da jetzt nur nicht komplett reindenken. Deshalb hab ich halt mal geschrieben, was mir so in den Sinn kam dazu.
Außerdem hab ich dir ja nen Ansatz gegeben, dem du nachgehen kannst...

Aber OK. Ich versuch mich für die Zukunft zu bessern :)
 
M

MiDniGG

Gast
So. Habs etz mal gemacht. Allerdings mit nem normalen String und ned mit diesem Tokenizer... Vllt hilfts ja:

Code:
public static void main(String[] args) throws Exception{
        
        int zahl1 = 0;
        int zahl2 = 0;
        int erg = 0;
        String op = null;
//	------------------------------Eingabe----------------------------------------            
        System.out.print("Gebe Zahl1 Opperator Zahl2 ein: ");
        String br = new BufferedReader(new InputStreamReader(System.in)).readLine();
//        Splitten

        String st = new String(br);
        
          if(st.contains("+")) {
              zahl1 = Integer.parseInt(st.substring(0, st.indexOf("+")).trim());
              op = "+";
              zahl2 = Integer.parseInt(st.substring(st.indexOf("+") + 1).trim());
          }
          else if(st.contains("-")) {
              zahl1 = Integer.parseInt(st.substring(0, st.indexOf("-")).trim());
              op = "-";
              zahl2 = Integer.parseInt(st.substring(st.indexOf("-") + 1).trim());
          }
          else if(st.contains("*")) {
              zahl1 = Integer.parseInt(st.substring(0, st.indexOf("*")).trim());
              op = "*";
              zahl2 = Integer.parseInt(st.substring(st.indexOf("*") + 1).trim());
          }
          else if(st.contains("/")) {
              zahl1 = Integer.parseInt(st.substring(0, st.indexOf("/")).trim());
              op = "/";
              zahl2 = Integer.parseInt(st.substring(st.indexOf("/") + 1).trim());
          }
          System.out.println(zahl1 + op + zahl2);
          if(op.equals("+")) {
              erg = zahl1 + zahl2;
          }
          else if(op.equals("-")) {
              erg = zahl1 - zahl2;
          }
          else if(op.equals("*")) {
              erg = zahl1 * zahl2;
          }
          else if(op.equals("/")) {
              erg = zahl1 / zahl2;
          }
          System.out.println(erg);
    }

gut. a bissl lang. Kammer bestimmt noch irgendwie kürzen :)
 

Kopf411

Mitglied
Vielen Dank!!
Genau so was hab ich gebraucht.
Nette homepage übrigens von dir.
Siehst mit n bisschen Mühe kann man viel bewirken.
Danke nochmal :D
 
M

MiDniGG

Gast
Jaah. Aber ich bin faul... :-D

Homepage.. Naja hab schon bessere gesehen ^^ Aber was tut man nicht alles für den Papa :)
 

André Uhres

Top Contributor
Hier noch ein kleines Regexbeispiel (falls noch Bedarf sein sollte):
Code:
package demo;
/*
 * CalculatorDemo.java
 */

import java.util.regex.*;

public class CalculatorDemo {

    public CalculatorDemo() {
        String input = "-33.3 / 11";
        Object[] data = parseInput(input);
        System.out.println("input: " + input);
        System.out.println("result: " + (Double) data[0] / (Double) data[2]);
    }

    private Object[] parseInput(final String str) {
        Matcher matcher = Pattern.compile("([-+]?\\b[0-9]+(\\.[0-9]+)?\\b)").matcher(str);
        String n1 = null, n2 = null;
        int opStart = 0, opEnd = 0;
        if (matcher.find()) {//first number
            n1 = matcher.group(1);
            opStart = matcher.end(1);
        }
        if (matcher.find()) {//second number
            n2 = matcher.group(1);
            opEnd = matcher.start(1);
        }
        return new Object[]{
            Double.parseDouble(n1),//first number
            opStart == opEnd ? "+" : str.substring(opStart, opEnd).trim(),//operator
            Double.parseDouble(n2)//second number
        };
    }

    public static void main(final String[] args) {
        new CalculatorDemo();
    }
}
 
Status
Nicht offen für weitere Antworten.
Ähnliche Java Themen
  Titel Forum Antworten Datum
E String zerlegen aus args Java Basics - Anfänger-Themen 1
I Zerlegen von String Java Basics - Anfänger-Themen 3
L String zerlegen & elemente hinzufügen Java Basics - Anfänger-Themen 5
M String zerlegen anhand anderer String Java Basics - Anfänger-Themen 6
Orkanson Methoden String in Wörter zerlegen und Endungen der Wörter überprüfen. Java Basics - Anfänger-Themen 4
Silvascus String zerlegen Java Basics - Anfänger-Themen 6
H String zerlegen Java Basics - Anfänger-Themen 16
I String gezielt zerlegen Java Basics - Anfänger-Themen 5
D String zerlegen Java Basics - Anfänger-Themen 2
H String mit Leerzeichen in Variablen zerlegen Java Basics - Anfänger-Themen 4
B String zerlegen Java Basics - Anfänger-Themen 25
T String zerlegen Java Basics - Anfänger-Themen 15
K Bestimmten String zerlegen Java Basics - Anfänger-Themen 12
H String zerlegen in einzelne Buchstaben (char)?? Java Basics - Anfänger-Themen 7
M String an bestimmten Stellen zerlegen Java Basics - Anfänger-Themen 12
M Integer.parseInt String zerlegen Java Basics - Anfänger-Themen 6
I String ohne Zeichen zerlegen lassen Java Basics - Anfänger-Themen 5
G String zerlegen? Java Basics - Anfänger-Themen 2
G String zerlegen Java Basics - Anfänger-Themen 14
M String zerlegen Java Basics - Anfänger-Themen 6
O String mit split zerlegen Java Basics - Anfänger-Themen 6
J String zerlegen mit mehreren trennzeichen Java Basics - Anfänger-Themen 3
Dilandau string intelligent zerlegen Java Basics - Anfänger-Themen 7
G string zerlegen? Java Basics - Anfänger-Themen 3
N String zerlegen und auf mehreren Variablen zuweisen Java Basics - Anfänger-Themen 3
krgewb String mit Datumsangabe in Long umwandeln Java Basics - Anfänger-Themen 2
D String Groß/Kleinschreibung Ignorieren Java Basics - Anfänger-Themen 4
D Map<String, Integer> sortieren und der reinfolge nach die Glieder abfragen Java Basics - Anfänger-Themen 3
J Ähnlichen String in Liste finden Java Basics - Anfänger-Themen 6
Kartoffel_1 String transformation Java Basics - Anfänger-Themen 7
H String-Operation replace() - Zeichenkette verdoppeln Java Basics - Anfänger-Themen 2
K String analysieren Java Basics - Anfänger-Themen 27
Beowend String zu Date parsen Java Basics - Anfänger-Themen 1
Beowend String auf Satzzeichen überprüfen? Java Basics - Anfänger-Themen 6
H Liste nach String-Länge sortieren Java Basics - Anfänger-Themen 1
String in ArrayList umwandeln Java Basics - Anfänger-Themen 1
I Sass Compiler und String erhalten? Java Basics - Anfänger-Themen 7
Avalon String in Double bzw. Währung konvertieren Java Basics - Anfänger-Themen 6
T Methode akzeptiert String nicht Java Basics - Anfänger-Themen 18
F Arraylist<String>Ein Wort pro Zeile Java Basics - Anfänger-Themen 6
J Schlüsselworte Prüfen, ob ein bestimmtes, ganzes Wort in einem String enthalten ist. Java Basics - Anfänger-Themen 6
N String überprüfen Java Basics - Anfänger-Themen 3
M Long-Typ in String-Änderung führt zu keinem Ergebnis bei großer Zahl Java Basics - Anfänger-Themen 11
Ostkreuz String Exception Java Basics - Anfänger-Themen 8
W Items löschen aus String Array vom Custom Base Adapter Java Basics - Anfänger-Themen 2
MoxMorris Wie macht man String[] = String[] aus einer anderer Methode? Java Basics - Anfänger-Themen 18
J String Filter Java Basics - Anfänger-Themen 5
S String Array Buchstaben um einen gewissen Wert verschieben Java Basics - Anfänger-Themen 4
R Größter zusammenhängender Block gleicher Zeichen im String Java Basics - Anfänger-Themen 1
XWing Randomizer mit einem String Java Basics - Anfänger-Themen 2
D 2D Char Array into String Java Basics - Anfänger-Themen 2
H Cast von Float nach String klappt nicht Java Basics - Anfänger-Themen 12
B Beliebiger String gegeben Suche Datum in String Java Basics - Anfänger-Themen 6
I String Java Basics - Anfänger-Themen 4
I API - zurückgegebener JSON String lesen und in Entity konvertieren Java Basics - Anfänger-Themen 2
H Zu langen String aufteilen - bequeme Methode? Java Basics - Anfänger-Themen 14
W String einer Textdatei in einzelne Stringobjekte pro Zeile aufteilen Java Basics - Anfänger-Themen 14
belana wie am besten 2D Array von String to Integer Java Basics - Anfänger-Themen 18
J Java To String Methode, Array mit For-Schleife Java Basics - Anfänger-Themen 2
M Kommandozeilenparamter als EINEN String werten Java Basics - Anfänger-Themen 5
M RandomAccessFile int und String gleichzeitig in einer Datei Java Basics - Anfänger-Themen 49
M Prüfen on eine Zahl im String enthalten ist Java Basics - Anfänger-Themen 3
Distanz zwischen zwei Zeichenfolgen in einem String bestimmen Java Basics - Anfänger-Themen 5
Substring in einem String finden Java Basics - Anfänger-Themen 13
BeginnerJava String mit vorgegebener Länge und Buchstaben erzeugen/ mit Leerstellen Java Basics - Anfänger-Themen 8
I Eindeutiger String mit maximaler Anzahl an Zeichen Java Basics - Anfänger-Themen 11
H Interface Wieso "List<String> list = new ArrayList<>[…]" Java Basics - Anfänger-Themen 4
JavaBeginner22 Integer in String umwandeln Java Basics - Anfänger-Themen 7
HolyFUT JSON String in Java Object schreiben - Anführungszeichen rauskriegen? Java Basics - Anfänger-Themen 17
Fodoboo131 RegEx- Umwandlung von String in ausführbares Objekt/ Befehl Java Basics - Anfänger-Themen 9
HolyFUT Input/Output Leerzeichen aus String entfernen - klappt nicht! Java Basics - Anfänger-Themen 13
viktor1 Methoden Methode schreiben static void readText (String filename) {...} zu WordHistogramSample.java Java Basics - Anfänger-Themen 13
ravenz Schleife mit for über String Array „zahlen“und prüfen ob Wert „a“ oder „b“ oder „c“ entspricht (mittels || ) Java Basics - Anfänger-Themen 4
G Position einer unbekannten 3-stelligen-Zahl in einem String finden Java Basics - Anfänger-Themen 15
T String Array Fehler beim Index Java Basics - Anfänger-Themen 3
H Erste Schritte Nach einer Zahl n soll n Mal der String untereinander ausgegeben werden Java Basics - Anfänger-Themen 3
X Datentypen String.equals funktioniert nicht Java Basics - Anfänger-Themen 5
Alen123 String wiederholen mit Schleifen Java Basics - Anfänger-Themen 1
A String split funktioniert nicht, wenn mehr als 1 Ziffer vor dem Zeichen steht nach dem er trennen soll? Java Basics - Anfänger-Themen 4
T String splitten Java Basics - Anfänger-Themen 3
sserio Schwimmen als Spiel. Problem mit to String/ generate a card Java Basics - Anfänger-Themen 4
J Datentypen String in File konvertieren funktioniert nicht Java Basics - Anfänger-Themen 4
T Platzhalter in String? Java Basics - Anfänger-Themen 14
M String mit Variable vergleichen Java Basics - Anfänger-Themen 9
I String Kombination erstellen anhand fortlaufender Zahl (Vertragsnummer) Java Basics - Anfänger-Themen 13
Fats Waller Compiler-Fehler Kann ich einen String und die Summe zweier Char Werte mittels der println Anweisung ausgeben Java Basics - Anfänger-Themen 4
M Wie kann eine Methode (string) eine andere Methode (void) mit zufälligen int-Werten aufrufen? Java Basics - Anfänger-Themen 4
P9cman Vokale in einem String überprüfen mittels Rekursion Java Basics - Anfänger-Themen 8
schredder Strings und reguläre Ausdrücke - Methode mit return string.matches Java Basics - Anfänger-Themen 5
R Ein Multidimensionales String Array initialisieren und Deklarieren Java Basics - Anfänger-Themen 2
H String Repräsentation eines Rechtecks mit Instanz-Methode Java Basics - Anfänger-Themen 8
Dorfschmied Kartesisches Produkt von zwei Liste mit Hashmaps<String,String> erstellen Java Basics - Anfänger-Themen 4
S String mit Int input vergleichen Java Basics - Anfänger-Themen 5
C String/Char-API Java Basics - Anfänger-Themen 13
U Char zu einem String machen Java Basics - Anfänger-Themen 1
B Anzahl Nullen uns Einsen in String ermitteln Java Basics - Anfänger-Themen 3
T Leerzeichen im String entfernen Java Basics - Anfänger-Themen 6
Jose05 Nullpointerexception bei Umwandlung von String zu int Java Basics - Anfänger-Themen 2
O Ich habe einen String und soll mit matches schauen, ob ein Buchstabe zu einer geraden ANzahl im String vorkommt, wie soll das gehen? Java Basics - Anfänger-Themen 7
M String beim einlesen formatieren Java Basics - Anfänger-Themen 12

Ähnliche Java Themen

Neue Themen


Oben