Methoden Wort aus String löschen und richtige Verschachtelung

Xenophore

Mitglied
Moin. Ich grübel nun seit mehreren Tagen über dem gleichen Problem. Habe schon diverse Foren durchsucht mich quer durchs netz gegoogelt aber finde entweder hundert verschiedene möglichkeiten von denen mir nicht ersichtlich ist, welche passt oder ich finde garnichts zutreffendes.

Mein Problem ist folgendes. Ich hol mir aus einer Datenbank ein array an Namen. (Diese entsprechen der Liste aktueller User in einem (chat) channel) Dieses array wird dann zu einem string zusammengepackt und übergeben.
Bevor dies geschieht möchte ich allerdings bestimmte Namen aus diesem String löschen und ihn dann übergeben.

Aktueller Code sieht wie folgt aus.

Java:
public void addQueue(String c)
	{
		for(int n=0; n<channels.length; n++)
		{
			if(channels[n].equals(c.toLowerCase()))
			{
				queon[n] = true;
				String[] users = dbc.getChannelUsers(c);
				if(!users[0].equals("0"))
				{
					for(String u : users)
					{
						addUser(u, c);
					}
				}
				return;
			}
		}
	}

Meine Überlegung war, dass ich nach der if Schleife eine neue Schleife aufmache und dann den String auslese und alles was ich nicht haben will soll gelöscht werden.

Liste der Nanen die nicht drin sein sollen sind:
CoreHD
H
I
Q
Thunder
Xenophore

allerdings können die Namen auch verändert auftreten, was mit berücksichtigt werden müsste.
etwa als afk|Xenophore oder OFF|Xenophore.

Da steh ich aktuell doch or einem dicken Problem was ich mit meinem Wissen absolut nicht gelöst bekomme.
Vielleicht könnt ihr mir ja mit ein paar Ansätzen weiterhelfen.
 
T

TryToHelp

Gast
Hi,
ich hab zwar deinen Code nicht ganz verstanden, was du da jetzt wie, wo und warum machst. Aber dein Problem mit dem geänderten Namen kannst du mit einem contains testen.

Bei deinem code, was ist den der String der dir übergeben wird, also das c?
was ist den die variable channels?

ich würde es so in der Art machen

durch dein array von namen itterieren (z.B. for schleife)
jeden namen mittels dem oben angesprochenem contains mit deinen namen die ausgeschlossen werden sollen checken, dieses am besten auch durch eine itteration über die liste dieser namen
gehört er nicht zu der lisste, dann deinem string anhängen
 
B

bone2

Gast
du hast ein array von usern?
dann reicht doch eine for schleife, die einmal drüber läuft und dann mit
Java:
for(String u : userArray){
    if(! (u.contains("|Xenophore") or u.contains("|H"))){
        addUser(u, c);
    }
}
user zurückgibt. allerdings ist das mit dem usern die nicht vorkommen sollen schwirig, erfordert wahrscheinlich matcher/regex
"|H" würde ja auch auf einen User namens Hupe passen
 

d3rbastl3r

Bekanntes Mitglied
Man könnte auch folgendermaßen vorgehen:

Java:
ArrayList<String> nameList = new ArrayList<String>();
nameList.add("CoreHD");
nameList.add("H");
nameList.add("I");
nameList.add("Q");
nameList.add("Thunder");
nameList.add("Xenophor");

for(String u : users){
    if(!nameList.contains(u)){
        addUser(u, c);
    }
}

So kannst du in der ArrayList neue Namen hinzufügen oder entfernen, diese werden dann automatisch berücksichtigt ;)
 

jamesv

Bekanntes Mitglied
Wenn du eventuell noch mehr Namen hast, kannst du die ja auch in eine DB speichern und dann den Rat von d3rbastl3r.


Somit hättest du eine Vereinfachung, wenn du eventuell mehr User hinzufügen, oder auch User aus der Liste löschen möchtest.
 
T

TryToHelp

Gast
Dann kann man das filtern auch gleich in der DB machen und nur die Liste der User ohne diese rauslesen
 

Xenophore

Mitglied
Besten Dank schonmal für die fixe Hilfe.


Mhhhh also ich glaub das was ich eigentlich wollte ist noch nicht ganz verstanden worden :D

Sofern ich nun die meisten Lösungen (abgesehen von der ersten) richtig verstanden habe, wird abgefragt ob der Nick vorkommt und dann ein add ausgeführt. Das war aber so nicht gemeint. Die nicks die angegeben waren kommen mal vor und mal nicht. (abhängig vom status werden sie ja mit Tags versehen) Und sofern einer dieser Nicks innerhalb des user arrays vorkommt, soll dieser daraus gelöscht werden.

Der Code dient dazu, eine Queue auf zumachen. Also ne Warteschlange. D.h. wenn ich die Queue starte, lädt er einmal alle Nicks aus dem Channel reiht sie auf und ich kann sie dann mit weiteren commands abfahren.
Das blöde ist natürlich, dass die Leute, die für den Channel zuständig sind und somit dort immer online sind, nicht in der Liste vorkommen sollen.
Ergo müssten diese irgendwo beim erstellen der Liste rausfliegen.

An sich ist die Idee mit dem Array für die Nicks garnich mal verkerht. Hatte ich auch schon im Sinn. Was mir absolut fehlt ist der korrekte Befehl damit ich das eine Array abfahren kann und auf alle Einträge des Nicks prüfen kann.
Sofern er irgendwo einen Match hat sollte der eintrag aus dem User Array gelöscht werden.

Ich hoffe das ist nun etwas besser verständlich geworden. :)
 

sambalmueslie

Bekanntes Mitglied
naja prinzipiell hast du doch alles was du brauchst :)

Java:
final ArrayList<String> blackList = new ArrayList<String>();
		blackList.add("CoreHD");
		blackList.add("H");
		blackList.add("I");
		blackList.add("Q");
		blackList.add("Thunder");
		blackList.add("Xenophor");

		// some test users
		final String[] users = { "Ich", "Du", "Test", "Thunder", "akf|Xenophor" };
		for (final String user : users) {
			String strippedUser = user;
			for (final String bl : blackList) {
				if (strippedUser.contains(bl)) {
					strippedUser = strippedUser.replace(bl, "");
				}
			}
			// add user
			System.out.println("Add user: " + strippedUser);
		}

Blöd ist natürlich wenn der Name "Ich" gültig ist, aber "I" ungültig.
dann kannst du nicht mit contains arbeiten, hier wird einfach nur ersetzt.
Hilfreich wäre dann, wenn man wüsste wie dein UserName zusammengebaut ist und du mit Regular Expressions arbeitest.
 

Ark

Top Contributor
Mein Problem ist folgendes. Ich hol mir aus einer Datenbank ein array an Namen. (Diese entsprechen der Liste aktueller User in einem (chat) channel) Dieses array wird dann zu einem string zusammengepackt und übergeben.
Bevor dies geschieht möchte ich allerdings bestimmte Namen aus diesem String löschen und ihn dann übergeben.
Mach mal bitte ein konkretes Beispiel. Wie könnte dieser String, aus dem du was löschen willst, aussehen? Und wie soll dann der Ergebnisstring aussehen?

(Was ich nicht so ganz verstehe: Wenn du schon die Daten als Array vorliegen hast, warum manipulierst du nicht das Array bzw. führst auf Grundlage dessen deine Operationen aus, sondern willst die Operationen erst ausführen, nachdem du das Array zu einen String verwurstet hast? Oder verstehe ich dich komplett falsch?)

Mach mal bitte auch ein Beispiel, wie das Array aussiehen könnte, von dem du da sprichst.

Ark
 

d3rbastl3r

Bekanntes Mitglied
Mach mal bitte auch ein Beispiel, wie das Array aussiehen könnte, von dem du da sprichst.

Ark

Vielleicht sogar:
- deine Ausgangssituation (in welcher Form die Daten vorliegen)
- den Inhalt deines Arrays (wie Ark schon sagte)
- den Inhalt deines Strings (wie du den momentan hast)
- und den Inhalt des Strings (wie du ihn haben möchtest)

ps: @Ark
Alter Schwede bist du früh wach xD
 

Ark

Top Contributor
Vielleicht sogar:
[…]
- den Inhalt deines Strings (wie du den momentan hast)
- und den Inhalt des Strings (wie du ihn haben möchtest)


(So was erinnert mich immer daran, wie meine Mails häufig beantwortet werden: Ich stelle mehrere Fragen, die allesamt nicht mit "Ja" oder "Nein" beantwortet werden können. Und was kommt? "ja das geht" :autsch:)

@d3rbastl3r: Das musst du gerade sagen. :D Oder in welcher Ecke lebst du?

Ark
 
B

bone2

Gast
Das blöde ist natürlich, dass die Leute, die für den Channel zuständig sind und somit dort immer online sind, nicht in der Liste vorkommen sollen.

udn genau das macht doch der code
http://www.java-forum.org/java-basi...chen-richtige-verschachtelung.html#post943255
du hast das "!" übersehen, user werden nur geadded, wenn sie nicht in der liste vorkommen

mit einem name.split("|")[1] kommst du übrigends an den richtigen namen, ohne on| off| afk|
 

Xenophore

Mitglied
udn genau das macht doch der code
http://www.java-forum.org/java-basi...chen-richtige-verschachtelung.html#post943255
du hast das "!" übersehen, user werden nur geadded, wenn sie nicht in der liste vorkommen

mit einem name.split("|")[1] kommst du übrigends an den richtigen namen, ohne on| off| afk|


Ja war nich mein Tag gestern.... jetzt wo ich nochmal draufschau erscheint es mir auch logisch :D

Ich werde das mal testen heute Abend und bin gespannt ;)

___________________________________________________________________________________

Falls sich noch jemand damit befassen möchte.
Die Daten kommen aus keiner "echten" Datenbank basierend auf einem Filesystem sondern werden aus dem Netz gecached.

Das Array kann allemöglichen formen und arten von Nicks enthalten.
Da ich ein array im weiteren Verlauf der Bearbeitung nicht verwenden kann wirds in einen String umgewandelt.
Ja das Problem mit den weiterführenden Nicks ist echt nicht einfach.
I darf nicht. Ich aber schon.

Heisst dann Konkret.
Nicks im Array: Dakunier enelya Hawthrone offline|Kurostu SignZ afk|SLB ]C-G-C[XeQrT Xenophore adambass CoreHD H I Q Work|Thunder
(reinfolge ist willkürlich für dieses Beispiel)

Ähnlich sieht es im unveränderten String aus.

Somit sollten dann die Nicks: adambass CoreHD H I Q Thunder Xenophore rausfliegen und der fertige String nur noch folgendes enthalten:

Dakunier enelya Hawthrone offline|Kurostu SignZ afk|SLB ]C-G-C[XeQrT

Im weiteren verlauf der Bearbeitung wird mit den Nicks ein bisschen was angestellt. Da ich dann die Warteschlange über den NEXT command abfahre. Sieht dann so aus

[13:24] -> *H* next #help
[13:24] •›› Mode: [H] sets [+v ]C-G-C[XeQrT]
[13:24] [H] Hello ]C-G-C[XeQrT. Please state your question.
[13:24] •H• Done.
[13:24] •›› Mode: [Q] sets [+l 9]
[13:24] -> *H* next #help
[13:24] •H• The queue is empty.
[13:24] •›› Mode: [H] sets [-v ]C-G-C[XeQrT]
[13:24] •›› Part: []C-G-C[XeQrT] [XeQrT@Cyber-Gaming-Clan.de] ()

Wenn ich aber die Warteschlange aktiviere hab ich das problem, dass ich eben erst alle nicks abfahren muss die im Channel sind. Was ein wenig blöde ist. Daher ja das rauslöschen der Nicks die nicht sein sollen.
 

Xenophore

Mitglied
Nur aus reiner Neugier: Wie verarbeitest du anschließend den String in dem alle Namen stehen, bzw. was machst du damit?


Bitte hier ist der gesamte Code der Verarbeitung des NEXT Befehls

Java:
public class Next implements Command
{
    /**
     * Constructs a Loader
     * @param debug		If we're running in debug.
     */
	public Next()
	{
	}

	public void parse_command(Core C, H Bot, String numeric, String botnum, String username, String params)
	{
		DBControl dbc = Bot.getDBC();
		if(dbc.getAuthLev(username) >1)
		{
			String[] result = params.split("\\s");
			try
			{
				String chan = result[1];
				if(!result[1].startsWith("#")) throw new ArrayIndexOutOfBoundsException();
				if(Bot.onChan(chan))
				{
					String last = Bot.getPrevUser(chan);
					String next = Bot.getUser(chan);
					String user[] = dbc.getUserRow(next);
					while(user[0].equals("0") || !dbc.isOnChan(next,chan))
					{
						next = Bot.getUser(chan);
						if(next == null)
						{
							C.cmd_notice(numeric, botnum,username, "The queue is empty.");
							if(last != null && dbc.isOnChan(last,chan))
							{
								C.cmd_mode_me(numeric, botnum,last,chan,"-v");
							}
							return;
						}
						user = dbc.getUserRow(next);
					}
					if(dbc.isOnChan(last,chan))
					{
						C.cmd_mode_me(numeric, botnum,last,chan,"-v");
					}
					C.cmd_mode_me(numeric, botnum,next,chan,"+v");
					C.cmd_privmsg(numeric, botnum,chan, "Hello "+user[1]+". Please state your question.");
					C.cmd_notice(numeric, botnum,username, "Done.");
				}
				else
				{
					C.cmd_notice(numeric, botnum,username, "I'm not in "+chan);
				}
			}
			//he didn't, Yoda time!
			catch(Exception e)
			{
				C.cmd_notice(numeric, botnum,username, "/msg " + Bot.get_nick() + " next <#channel>");
				return;
			}
		}
		//user doesn't have access, that bastard!
		else
		{
			C.cmd_notice(numeric, botnum,username, "This command is either unknown, or you need to be opered up to use it.");
			return;
		}
	}
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
I Wort aus String löschen Java Basics - Anfänger-Themen 11
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
I String nach Wort suchen Java Basics - Anfänger-Themen 6
F Wort nach String ausgeben Java Basics - Anfänger-Themen 5
L Wort in String ersetzen Java Basics - Anfänger-Themen 11
M Methoden String methoden ,Häufigkeit einm wort in der Zeichenkette Java Basics - Anfänger-Themen 14
K Klassen String - nach Wort durchsuchen Java Basics - Anfänger-Themen 6
D Das 1. Wort aus einem String herauslesen Java Basics - Anfänger-Themen 6
D Wort nach Leerzeichen - String Java Basics - Anfänger-Themen 10
I Wie kann ich ein Wort in einem String suchen Java Basics - Anfänger-Themen 3
M Wort in einem String suchen und ausschneiden Java Basics - Anfänger-Themen 2
JavaBeginner22 Wort mit der größten Länge ausgeben Java Basics - Anfänger-Themen 4
O Regex bei ReplaceAll ersetzt Wort und Sonderzeichen nicht. Java Basics - Anfänger-Themen 9
R Hangman-Spiel-zufälliges Wort ermitteln Java Basics - Anfänger-Themen 4
S Wort einlesen Array ausgeben Java Basics - Anfänger-Themen 4
I Java-Wort einlesen und ausgeben Java Basics - Anfänger-Themen 7
O zufälliges Wort aus einer Datei einlesen Java Basics - Anfänger-Themen 32
J Ein Wort aus einer Datei zufällig ermitteln Java Basics - Anfänger-Themen 3
B Umbruch nach bestimmten Wort Java Basics - Anfänger-Themen 5
S Wort suchen und ersetzen in einer Datei Java Basics - Anfänger-Themen 6
M Programm, das ein Wort einliest Java Basics - Anfänger-Themen 3
P Zufälliges Wort direkt aus einer Liste ausgeben Java Basics - Anfänger-Themen 9
L Mit java ein wort mehrfach versetzt darstellen Java Basics - Anfänger-Themen 14
T Zeilen des ListArray nach einem Wort durchsuchen und diese Zeile ausgeben Java Basics - Anfänger-Themen 4
V Ein Wort einlesen und dann jede Buchstabe ausgeben Java Basics - Anfänger-Themen 10
H Erste Schritte Längstes Wort eines Strings herausfinden Java Basics - Anfänger-Themen 7
S Wort in Text suchen und ersetzen Java Basics - Anfänger-Themen 3
Ananaskirsche Variablen Gucken ob Wort in Datei exisitert Java Basics - Anfänger-Themen 6
W Vergleich ob Buchstabe in einem Wort enthalten ist Java Basics - Anfänger-Themen 3
N RegEx Wort anzeigen Java Basics - Anfänger-Themen 6
B CSV auslesen > Wort bilden > CSV ausgeben Java Basics - Anfänger-Themen 7
D 1 Wort aus TextDatei auslesen Java Basics - Anfänger-Themen 3
J Ein Wort einlesen und dann jede Buchstabe ausgeben Java Basics - Anfänger-Themen 25
W Zahl/Wort in ein Array zerlegen Java Basics - Anfänger-Themen 6
S Wort in zwei farben aufleuchten lassen Java Basics - Anfänger-Themen 2
Ollek Bestimmtes Wort aus einem Dokument lesen Java Basics - Anfänger-Themen 7
T Ersten Buchstaben in einem Wort groß schreiben. Java Basics - Anfänger-Themen 6
I Schriftart für einzelnes Wort in der JTextArea auswählen Java Basics - Anfänger-Themen 3
G Wort suchen Java Basics - Anfänger-Themen 4
L Was bedeutet das Wort "this" ? Java Basics - Anfänger-Themen 2
B a > n ? "wort" : "blub" << was Java Basics - Anfänger-Themen 3
B Char kommt 2 mal im Wort vor (indexOf) Java Basics - Anfänger-Themen 5
M Bestimmtest Wort aus einer Textdatei löschen Java Basics - Anfänger-Themen 3
L Gezielte Infos aus Datei holen - Suche nach Position/Wort Java Basics - Anfänger-Themen 22
E Wort in Datei suchen Java Basics - Anfänger-Themen 5
T Deutsches Wort für WindowClosingAdapter :) Java Basics - Anfänger-Themen 9
D wort rückwärts Java Basics - Anfänger-Themen 9
D Ein Wort einlesen über Tastatur und wieder ausgeben Java Basics - Anfänger-Themen 6
M Wort als Int funktioniert nicht Java Basics - Anfänger-Themen 29
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
N String überprüfen Java Basics - Anfänger-Themen 3
E String zerlegen aus args Java Basics - Anfänger-Themen 1
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
I Zerlegen von String Java Basics - Anfänger-Themen 3
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

Ähnliche Java Themen

Neue Themen


Oben