# String in String suchen



## Flooow (5. April 2011)

Guten morgen 

Ich hab zwei Strings (1. Telefon 2. gargel)
Telefon ist ein String der von einem Textfeld übergeben wird, je nachdem was eingeben wurde.
gargel ist eine Liste in der Ich nach "Telefon" suchen möchte.
Wie stelt man sowas an?

mfg


----------



## vfl_freak (5. April 2011)

Moin,

ich denke, Du suchst die Methode "*contains*" ...

```
String A = "ABCDEFG";
String B = "EF";

if( A.contains( B ) )
{
   // irgendwas
}
```

Gruß
Klaus


----------



## Flooow (5. April 2011)

Gut, danke

aba wie lass ich ihn jez das Ausgeben was er gefunden hat? 

mfg


----------



## vfl_freak (5. April 2011)

Moin,

die Methode "contains" gibt Dir doch einen bool'schen Wert zurück, je nachdem, ob der Teilstring gefunden wurde oder nicht.
Den kann Du doch einfach auf der Komsole ausgeben ..... 

Vlt. beschriebst Du mal,  was Du eigentlich genau vorhast ... das erhöht die Chancen, auch konkrete Antworten zu bekommen erheblich 

Gruß
Klaus


----------



## Flooow (5. April 2011)

```
import javax.swing.*;
import javax.swing.event.*;
import java.awt.*;
import java.awt.event.*;
import java.io.BufferedInputStream;
import java.io.DataInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;

/**
  *
  * Beschreibung
  *
  * @version 1.0 vom 04.04.2011
  * @author
  */

public class Grafik extends Frame {
  // Anfang Attribute
  private JTextField jTextField1 = new JTextField();
  private JLabel jLabel1 = new JLabel();
  private JButton jButton1 = new JButton();
  private JLabel jLabel2 = new JLabel();
  private JTextField jTextField2 = new JTextField();
  private JButton jButton2 = new JButton();
  private JButton jButton3 = new JButton();
  // Ende Attribute

  public Grafik(String title) {
    // Frame-Initialisierung
    super(title);
    addWindowListener(new WindowAdapter() {
      public void windowClosing(WindowEvent evt) { dispose(); }
    });
    int frameWidth = 306;
    int frameHeight = 300;
    setSize(frameWidth, frameHeight);
    Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
    int x = (d.width - getSize().width) / 2;
    int y = (d.height - getSize().height) / 2;
    setLocation(x, y);
    Panel cp = new Panel(null);
    add(cp);
    // Anfang Komponenten

    jTextField1.setBounds(48, 32, 185, 24);
    jTextField1.setText("jTextField1");
    cp.add(jTextField1);
    jLabel1.setBounds(88, 8, 104, 16);
    jLabel1.setText("Telefonnummer");
    jLabel1.setFont(new Font("MS Sans Serif", Font.PLAIN, 13));
    cp.add(jLabel1);
    jButton1.setBounds(96, 72, 75, 25);
    jButton1.setText("Suche");
    jButton1.setMargin(new Insets(2, 2, 2, 2));
    jButton1.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent evt) {
        jButton1_ActionPerformed(evt);
      }
    });
    cp.add(jButton1);
    jLabel2.setBounds(88, 120, 88, 16);
    jLabel2.setText("Anrufnummer");
    jLabel2.setFont(new Font("MS Sans Serif", Font.PLAIN, 13));
    cp.add(jLabel2);
    jTextField2.setBounds(48, 152, 185, 24);
    jTextField2.setText("jTextField2");
    cp.add(jTextField2);
    jButton2.setBounds(96, 192, 75, 25);
    jButton2.setText("Suche");
    jButton2.setMargin(new Insets(2, 2, 2, 2));
    jButton2.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent evt) {
        jButton2_ActionPerformed(evt);
      }
    });
    cp.add(jButton2);
    jButton3.setBounds(80, 224, 107, 25);
    jButton3.setText("Alle Eintraege");
    jButton3.setMargin(new Insets(2, 2, 2, 2));
    jButton3.addActionListener(new ActionListener() {
      public void actionPerformed(ActionEvent evt) {
        jButton3_ActionPerformed(evt);
      }
    });
    cp.add(jButton3);
    // Ende Komponenten

    setResizable(false);
    setVisible(true);
  }

  // Anfang Methoden
  public void jButton1_ActionPerformed(ActionEvent evt) {
      double Telefon =0;
       try {
       Telefon = Double.parseDouble(jTextField1.getText());
        } catch (NumberFormatException e) {
        }

        System.out.println(Telefon);

 }
  public void jButton2_ActionPerformed(ActionEvent evt) {
      double Anruf =0;
       try {
           Anruf = Double.parseDouble(jTextField2.getText());
        } catch (NumberFormatException e) {

        }
        System.out.println(Anruf);
        
 }


  public void jButton3_ActionPerformed(ActionEvent evt) {

    File file = new File("Mappe11.csv");
    FileInputStream fis = null;
    BufferedInputStream bis = null;
    DataInputStream dis = null;

    try {
      fis = new FileInputStream(file);

      // Here BufferedInputStream is added for fast reading.
      bis = new BufferedInputStream(fis);
      dis = new DataInputStream(bis);
        // dis.available() returns 0 if the file does not have more lines.
      while (dis.available() != 0) {

      // this statement reads the line from the file and print it to
        // the console.
        System.out.println(dis.readLine());

        String liste;
        liste=dis.readLine();
      }
       // dispose all the resources after using them.
      fis.close();
      bis.close();
      dis.close();

    } catch (FileNotFoundException e) {
      e.printStackTrace();
    } catch (IOException e) {
      e.printStackTrace();
    }
  }

  // Ende Methoden

  public static void main(String[] args) {
    new Grafik("Grafik");
  }
}
```

Es ist mit grafischer Oberfläche.
Aus textfield 1 wird ein Wert , je nach eingabe ausgelesen.
Mit drücken auf den ersten Button soll das in einem String gespeichert werden.
Eine CSV datei habe ich schon als string gespeichert.
Jez soll der String aus dem Textfeld mit dem aus dem String der Csv Datei verglichen und Ausgegeben werden.
Nur stehe ich dabei völlig auf dem Schlauch..

mfg


----------



## MiMi (5. April 2011)

> Jez soll der String aus dem Textfeld mit dem aus dem String der Csv Datei verglichen und Ausgegeben werden.


Vergleichen wie oben geschrieben mit contains. 

```
if( A.contains( B ) )
{
    System.out.println("B: " + B + " gefunden);
}
```
Oder was willst du ausgegeben haben?

PS: Variablennamen schreibt man klein ^^


----------



## Flooow (5. April 2011)

4944990176      4944990177	01.08.2004	07:58:12	01.08.2004	08:10:01
"	               4944990178	02.08.2004	08:58:12	02.08.2004	09:10:01
"	               4944990179	03.08.2004	09:58:12	03.08.2004	10:10:01
"	                4944990180	04.08.2004	10:58:12	04.08.2004	11:10:01

So sieht meine CSV Datei aus.
Er soll mir jez ausgeben, wenn ich beispielsweise 04944990176 eingebe,  

                       4944990177	01.08.2004	07:58:12	01.08.2004	08:10:01
"	               4944990178	02.08.2004	08:58:12	02.08.2004	09:10:01
"	               4944990179	03.08.2004	09:58:12	03.08.2004	10:10:01
"	                4944990180	04.08.2004	10:58:12	04.08.2004	11:10:01

das diese Gespräche geführt wurden.
Sry das das so unübersichtlich ist ..


----------



## Flooow (5. April 2011)

weiß keiner mehr Rat ?


----------



## MiMi (5. April 2011)

Na dann, beim einlesen einer Zeile schaust du ob das gesuchte in der Zeile vorkommt (contains), falls ja, gibst du die Zeile aus.
Wenn du 2 mal in der while ein readLine machst, bin ich mir nicht sicher, ob er beim 2. mal nicht schon die naechste einlist. Und die definition der Variablen 'liste' kanst du auch in einer Zeile mit der Zuweisung schreiben, aber ist wohl geschmackssache ^^

```
while (dis.available() != 0) {
        String liste = dis.readLine();
            // hier das contains einfuegen und falls ja, system out mit liste
      }
```


PS: Nach 25 min keine Reaktion, schon nen Bump des Threads? Das ist hier nicht so gern gesehen


----------



## Flooow (5. April 2011)

Hmm wirft iwie ne menge errors..
Ich bin richtig schlecht in java^^  muss mir das zum Glück auch nur ganz selten vornehmen.
Könntest du es vllt mal versuchen dein geschriebenes in das Prog einzufügen?
vllt mach ich es ja auch einfach nur falsch..

Ich danke dir =)


----------



## MiMi (5. April 2011)

Zeig mal wie du es umgesetzt hast und welche Errors er "wirft". Den Ansatz hab ich dir gegeben, und den Rest musst du dir ja nur aus den anderen Antworten zusammen bauen.

Dann kann man dir eventuell auch besser helfen


----------



## Flooow (5. April 2011)

```
String liste;
        liste=dis.readLine();
        liste.split(";");

       double Telefon = 0;
       try {
           Telefon = Double.parseDouble(jTextField1.getText());
        } catch (NumberFormatException e) {
        }
        String Telefon1 = String.valueOf(Telefon);

        int result;
        result = Telefon1.indexOf(liste);

        if (result == -1){
          System.out.println("Keiner Vorhanden");
        }
        else {
          System.out.println("Sie suchen"+Telefon1);
        }

      }
```

ich habs so probiert. Er kompiliert auch. Jedoch wird das richtige Ergebnis auch unter den Falschen angezeigt. Somit wird kein richtiges angezeigt. woran liegt das?


----------



## MiMi (6. April 2011)

Hm poste deinen Code doch bitte in java-tags, dann gibts auch Syntax-Highlighting.
Hast du dir die Posts ueberhaupt durchgelesen? 
Wenn du methoden nutzt, solltest du auch schauen was sie machen, dein split macht naemlich gar nichts so wie du es nutzt Split()
Und indexOf()

```
String liste;
        liste=dis.readLine(); // kann in 1 Zeile mit dem drueber
        liste.split(";"); // macht nichts
 
       double Telefon = 0; // variablen schreibt man klein
       try {
           Telefon = Double.parseDouble(jTextField1.getText());  // erst zu double parsen....
        } catch (NumberFormatException e) {
        }
        String Telefon1 = String.valueOf(Telefon); // ... und dann wieder zurueck zum String?
 
        int result; 
        result = Telefon1.indexOf(liste); // kann auch in 1 Zeile mit dem drueber
       /** indexOf, naja ist wohl kein contains(), geht aber auch
         * bsp: 
         * Telefon1 = 123
         * liste = 123;234;345
         * was macht indexOf bei Telefon1.indexOf(liste)?
         * der sucht in 123, ob dort der Inhalt der Liste vorkommt. Natuerlich enthaelt 123 NICHT 123;234;345
         **/    
 
        if (result == -1){
          System.out.println("Keiner Vorhanden");
        }
        else {
          System.out.println("Sie suchen"+Telefon1);
        }
 
      }
```


----------

