String zurechtschneiden und Query draus machen

dg87

Erfahrenes Mitglied
Moin,

ich möchte eine Methode schreiben, die ein Gruppen Objekt als Paramter bekommt. Dieses Gruppen Objekt enthält unter anderem den Namen der Gruppe. Wenn jemand bei mir im Formular zB Simpsons oder auch Simpsons der Film eingibt, möchte ich entsprechende Gruppen mit diesen Namen vorschlagen. Er kann also Variabel viele Strings eingeben (werde alle unter Name geholt).

Wie zersplittere ich das (pro Leerzeichen neues Wort), damit ich nen Query an die DB schicken kann?

Vielen Dank im vorraus
 
Hellas!

"Zersplittern" klingt nach String.split:

Java:
String s = "Simpsons der Film";
String[] parts = s.split(" ");
 
Zuletzt bearbeitet von einem Moderator:
Da werd ich dann eine schleife brauchen oder? Wie geht die in Java (sorry bin no ned ganz so fit iwie)
Weil man weiß ja nicht wieviele Eingaben kommen..
Quasi so irgendwie:
query = "Select * from gruppen where name like String1 ";
schleife - prüfen ob noch was kommt
query.append " OR name like String2"
usw
 
Zuletzt bearbeitet:
Java:
for (int i = 0; i < parts.length; i++) {
          System.out.println(parts[i]);
}
Wenn du des mit dem Split machst bekommst du ja ein Array und mit .length bekommst du die Länge dieses Arrays. Ich lege dir ebenfalls Eclipse ans Herz.
Also Eclipse Classic
http://www.eclipse.org/downloads/
 
Zuletzt bearbeitet:
Wenn ichs gerade noch sehe du must nicht append machen wir sind hier in JAVA :) da reicht wenn du des wie folgt machst:
Java:
public class Test {

	/**
	 * @param args
	 */
	public static void main(String[] args) {
		// TODO Auto-generated method stub
		
		String input = "Java ist so geil";
		String parts[] = input.split(" ");
		String sql = "Select * from gruppen where name like ";
		for (int i = 0; i < parts.length; i++) {
			sql = sql + parts[i] + " ";
		}
		System.out.println(sql);
	}
	

}
 
Jetzt hab ich doch noch ein Problem. Was ist wenn der User zwischen zwei Wörter nicht eins, sondern zwei Leerzeichen eingibt? Trim() schneidet ja nur anfang und ende oder?
Ich muss ja auf die Eingaben reagieren. Und das ja schon vorm splitten, nicht dass er mir dann was falsches macht, weil der User zwei Leerzeichen hintereinander eingegeben hat oder sowas.

Danke um Hilfe
 
Java:
public class Test {
 
    /**
     * @param args
     */
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        
        String input = "Java ist so geil";
        String parts[] = input.split(" ");
        String sql = "Select * from gruppen where name like ";
        for (int i = 0; i < parts.length; i++) {
            if(!(parts[i].isEmpty()))
				sql = sql + parts[i] + " ";
        }
        System.out.println(sql);
    }
    
 
}
 
Und hier noch ein kleines Beispiel wie du es davor schon abfangen kannst:
Java:
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import java.util.Date;

import javax.swing.JFrame;
import javax.swing.JTextField;


public class testKey extends JFrame implements KeyListener{
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	private boolean space;
	private Date start_time;
	private JTextField jtf = new JTextField();

	public static void main(String []args){
		new testKey();
	}
	public testKey(){
		space = true;
		jtf = new JTextField();
		
		jtf.addKeyListener(this);

		jtf.setSize(200,20);

		this.add(jtf);
			
		this.setDefaultCloseOperation(EXIT_ON_CLOSE);
		this.pack();
		this.setVisible(true);
		
		
	}
	@Override
	public void keyPressed(KeyEvent arg0) {
		// TODO Auto-generated method stub
		if(arg0.getKeyCode()==32&&space == true)
			jtf.setText(jtf.getText().substring(0, jtf.getText().length()-1));
		else if(arg0.getKeyCode()==32)
			space = true;
		else
			space = false;
	}

	@Override
	public void keyReleased(KeyEvent arg0) {
		// TODO Auto-generated method stub

	}

	@Override
	public void keyTyped(KeyEvent arg0) {
		// TODO Auto-generated method stub

	}
	

}
 
Zuletzt bearbeitet:
Danke dir, wobei das zweite nicht zu meine Fall passt.
Das erste hat völlig ausgereicht. Dachte nur ich sollte die eingaben schon vor der Schleife prüfen, weil wenn anstatt text nur zwei Leerzeilen reinhaut, also im String dann nur __ steht, dann baut er sich einen fehlerhaften Query zusammen.
Trotzdem danke! Denke mit dem Beispiel kann ich was anfangen.

edit:
Sprich er baut dann oben den Select zusammen, aber hat keine Werte für die Spalten nach den Likes :)
 
Zuletzt bearbeitet:
Achja sorry du arbeitest ja mit Konsolen Eingabe ^^ hab ich ganz vergessen dann passt des natürlich nicht
 

Neue Beiträge

Zurück