Aus einem String unbekannte zeichen filtern

Jigga

Bekanntes Mitglied
Guten Abend java forum :)
ich habe folgendes problem:
ich sniffe UDPpackete eines bestimmten ports und lese dessen packetdaten aus in denen unteranderem ein String steht,den ich haben möchte.
Das gesamte packet.data byte array caste ich mir mit new String(array)
und erhalte dann zb sowas:
unbenanntktz.jpg


nun will ich nur den "lesbaren" string haben,hat jemand eine idee,wie ich an diesen rankomme?


PS: im lesbaren string können zahlen und folgende sonderzeichen enthalten sein:
Code:
 (!),(?),(.)(-)(:)(_),(|),(=),(\),(/),([),(]),({),(}),(~),(&),($) und die normalen klammern selbst
 

timbeau

Gesperrter Benutzer
Regex wäre eine Möglichkeit. (\p{L}[0-9][Sonderzeichen])

Aber bist du sicher, dass du nicht falsch castest? Ich mein was sind das denn für Zeichen die nicht mit UTF-8 gelesen werden können?
 

Jigga

Bekanntes Mitglied
mein cast sieht eigentlich wie folgt aus:
Java:
System.out.println(new String(p.data));

habe mich das auch schon gefragt,weil das ganze in wireshark ganz anders aussieht (zum teil),oder es ersetzt die nicht unterstützten zeichen einfach mit einem "."
 
Zuletzt bearbeitet:

nrg

Top Contributor
du könntest die character zum int casten und eine bestimmte range filtern. wäre auch gut gewesen, wenn du das zeug searchable gepostet hättest :)
 

Jigga

Bekanntes Mitglied
du könntest die character zum int casten und eine bestimmte range filtern. wäre auch gut gewesen, wenn du das zeug searchable gepostet hättest :)

hätte ich ja gerne geamacht,aber ich glaube,dass ich nach einem copy-paste hier ein anderes resultat hätte :D
zumindest ist bis jetzt jegliches copypaste fehlgeschlagen.

meine idee war es eig auch regex zu verwenden und dann alles raushauen,was nicht zu standardzeichen,buchstaben,zahlen gehört.geht das?

du meinst über das byte[] eine schleife laufen lassen und jeden index in char casten?
sowas hatte ich auch mal versucht,als ich auf der suche nach "wie mache ich die packet.data sichtbar war
dabei kam eine range von -127 bis 127 raus meine ich.hab nur keine ahnung wofür diese zaheln dann stehen



EIDT:gerade kam mir eine idee.der server von dem ich die packete erhalte steht im asiatischen raum.kann es sein,dass die kästchen für eine unbekannte schrift stehen,wie zb die chinesischen zeichen?
 
Zuletzt bearbeitet:

Jigga

Bekanntes Mitglied
Es gibt bei utf-8 kaum unbekannte zeichen

ok ich verstehe,dann sind das vll keine strings,sondern zahlen oder etwas die eigenschaften des packetes beschreiben.
bezüglich deines regex ansatzes mit (\p{L}[0-9][Sonderzeichen]) :

was ist wenn der lesbare text nur buchstaben/zahlen enthält oder zB keine sonderzeichen?
wäre das dann mit dem "oder" machbar?
ich bin leider nicht so fit in regex,kann ich in "Sonderzeichen" die dinger einfacher hintereinander wegschreiben?
es ist halt schwer,weil diese enthalten seine können,aber eben nur können ???:L
 

eRaaaa

Top Contributor
Ist dein String jetzt eig. nur die markierte Zeile, oder alles ? Generell stelle ich es mir etwas schwer vor, da jetzt genau das raus zu filtern was du willst, denn in deiner markierten Zeile hast du z.B. eine alleinstehende 2, in paar Zeilen da drunter ein x und a usw. Was sind denn das für Pakete? Kann man da nicht evtl. immer vorne und hinten generell etwas abschneiden? Hat der String der dich interessiert evtl. eine minimale Länge? So dass man dieses x und a auch ignorieren kann usw....
 

Jigga

Bekanntes Mitglied
Ist dein String jetzt eig. nur die markierte Zeile, oder alles ? Generell stelle ich es mir etwas schwer vor, da jetzt genau das raus zu filtern was du willst, denn in deiner markierten Zeile hast du z.B. eine alleinstehende 2, in paar Zeilen da drunter ein x und a usw. Was sind denn das für Pakete? Kann man da nicht evtl. immer vorne und hinten generell etwas abschneiden? Hat der String der dich interessiert evtl. eine minimale Länge? So dass man dieses x und a auch ignorieren kann usw....


jede zeile ist ein einzelner String.
und ja zwischendurch kommen da mahl vereinzelt normale buchstaben/zahlen,diese interessieren mich nicht.
der gewünschte string hat eine maximallänge von 15, und eine minimalänge von 3 zeichen(buchstaben u/o zahlen u/o sonderzeichen)
und ja an das abschneiden habe ich auch bereits gedacht,ich glaube jedoch,dass der string immer an verschiedenen stellen steht,generell kann man sagen eher in der zweiten hälfte,demnach könnte man da schon etwas wegschneiden,jedoch den geneauen schnitt zu landen wäre da schon komplizierter
 

eRaaaa

Top Contributor
Vllt. hilft ja sogar schon so etwas wie String(byte[] bytes, Charset charset) und dem richtigen Charset ? :bahnhof:
Mhm, ansonsten könntest du mal so etwas wie
Java:
		final int MIN_LENGTH = 3;
		final int MAX_LENGTH = 15;
		final String REGEX = ".*?([\\x21-\\x7E]{"+MIN_LENGTH+","+MAX_LENGTH+"}).*?";
		Pattern p = Pattern.compile(REGEX);
		Matcher matcher = p.matcher(s);
		while (matcher.find()) {
			System.out.println(matcher.group(1));
		}
ausprobieren, wobei s = der String/Zeile (oder aber den kompletten Paketstring) ist.
Das wäre jetzt das was nrg vorgeschlagen hat, einen bestimmten ASCII Bereich zu erlauben, hier Hex 21(33) bis Hex 7E (126) (ASCII-Tabelle) , würde also auch einige Sonderzeichen(#, %, @ ..) erlauben die von dir nicht gewünscht sind(kann man aber natürlich noch anpassen)
Oder aber man entfernt einfach alle Zeichen die diesen Zeichen nicht entsprechen (wobei man dann wieder Probleme mit den einzelnen erlaubten Zeichen hätte unter Umständen ?! )
Java:
		final String REGEX2 = "[^\\x21-\\x7E]";
		s = s.replaceAll(REGEX2, "");

:roll:

ich gehe mich jetzt mal verstecken :)
 
Zuletzt bearbeitet:

Jigga

Bekanntes Mitglied
@eraaaa:
ich liebe dich für den code!
hat mir zwar nicht direkt geholfen,aber trotzdem! :D
mir ist durch wireshark letztens eingefallen,dass die strings doch immer an der selben stelle stehen,also habe ich die gewünschte stelle bestimmt,den string rausgeholt und dann deinen code darauf angewandt um nur das zu holen was ich brauche,falls es drinne ist.
funktioniert jetzt super,vielen dank für die hilfe!
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
B Unbekannte Zahl aus einem String umwandeln Java Basics - Anfänger-Themen 15
J Schlüsselworte Prüfen, ob ein bestimmtes, ganzes Wort in einem String enthalten ist. Java Basics - Anfänger-Themen 6
XWing Randomizer mit einem String Java Basics - Anfänger-Themen 2
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
G Position einer unbekannten 3-stelligen-Zahl in einem String finden Java Basics - Anfänger-Themen 15
P9cman Vokale in einem String überprüfen mittels Rekursion Java Basics - Anfänger-Themen 8
U Char zu einem String machen Java Basics - Anfänger-Themen 1
N Aus einem String die Anzahl der Vokale auslesen Java Basics - Anfänger-Themen 40
I Validation, ob String ein Wert aus einem Enum enthält Java Basics - Anfänger-Themen 3
R Mehrere Buchstaben aus einem String entfernen Java Basics - Anfänger-Themen 1
P Ein Objekt nach einem String durchsuchen? Java Basics - Anfänger-Themen 7
F Java Programm, das kleine Buchstaben in einem String zählen soll und bei großen Buchstaben oder Sonderzeichen abbrechen soll. Java Basics - Anfänger-Themen 5
J Verschieben von Buchstaben in einem String um vorgegebene Anzahl von Zeichen innerhalb eines weiteren String Java Basics - Anfänger-Themen 12
F JMenuItem Kann nicht nach einem String benannt werden... Java Basics - Anfänger-Themen 11
J String aus einem Array entfernen Java Basics - Anfänger-Themen 10
S Ersetzen eines Asterix in einem String Java Basics - Anfänger-Themen 8
FelixN RegEx aus einem String als String-Array zurückgeben Java Basics - Anfänger-Themen 8
J erstes Vorkommen eines Chars aus einem String entfernen Java Basics - Anfänger-Themen 3
B String zu einem bestehenden String hinzufügen Java Basics - Anfänger-Themen 9
J Wie kann ich z.B. einem int-Wert einen String-Wert zuweisen? Java Basics - Anfänger-Themen 2
O String von vorne nach hinten an einem Zeichen Java Basics - Anfänger-Themen 10
F Buchstaben in einem String vertauschen (Ohne replace) Java Basics - Anfänger-Themen 10
Dimax Leerzeilen aus einem String entfernen Java Basics - Anfänger-Themen 61
A In einem String alle Eigennamen zählen Java Basics - Anfänger-Themen 6
T Schauen ob eine Ziffer in einem String-Array häufiger vorkommt Java Basics - Anfänger-Themen 8
D Input/Output Array in einem String mit einem Trennzeichen verbinden Java Basics - Anfänger-Themen 17
N Variablen int Wert einem String abgeben Java Basics - Anfänger-Themen 8
C Chars in einem String alphabetisch sortieren Java Basics - Anfänger-Themen 1
F String zu einem Server senden Java Basics - Anfänger-Themen 4
A regulären Ausdruck mit Hilfe der Klasse Scanner in einem String finden Java Basics - Anfänger-Themen 2
D Java doppelte Zahlen auch über 10 in einem String entfernen Java Basics - Anfänger-Themen 2
D Java doppelte Zahl/Zeichen in einem String entfernen Java Basics - Anfänger-Themen 6
F Methoden Kontaktliste - String in einem Array suchen und ausgeben Java Basics - Anfänger-Themen 3
A werte in einem String berechnen Java Basics - Anfänger-Themen 3
F Größtes Produkt in einem String Java Basics - Anfänger-Themen 4
P Char aus einem String auswählen Java Basics - Anfänger-Themen 4
M Benutzerdefinierte Suche in einem String - outofbounds Java Basics - Anfänger-Themen 7
B Binäre Suche in einem String Array Java Basics - Anfänger-Themen 10
C Anzahl bestimmter Zeichen in einem String ausgeben Java Basics - Anfänger-Themen 7
C Position eines Zeichens in einem String ausgeben Java Basics - Anfänger-Themen 1
A Wie kann man einen zufälligen String aus einem StringArray auswählen? Java Basics - Anfänger-Themen 6
M (Leerzeichen) zu einem gesuchten String Java Basics - Anfänger-Themen 4
K String mit Leerstellen und einem X Java Basics - Anfänger-Themen 2
F In einem String nach einem String suchen und Zeichen danach ausgeben Java Basics - Anfänger-Themen 6
D Daten von einem int in einen string Java Basics - Anfänger-Themen 5
D Zahl in einem String finden Java Basics - Anfänger-Themen 4
I Entitäten speichern in einem String? Java Basics - Anfänger-Themen 1
W Schlüsselworte Methode, die die grösste Zahl aus einem String ermittelt und zurückgibt Java Basics - Anfänger-Themen 8
G String einem String Array übergeben Java Basics - Anfänger-Themen 3
C Methoden String von einem toString() herauslesen Java Basics - Anfänger-Themen 2
B Wie aus einem Datum String eine Timestamp erzeugen Java Basics - Anfänger-Themen 6
J Einem String-Array in einer for-Schleife Strings zuweisen - Klappt nicht in einer for-Schleife Java Basics - Anfänger-Themen 5
P String Sortieren in einem Array Java Basics - Anfänger-Themen 7
N Maximale Zahl in einem String Java Basics - Anfänger-Themen 8
B Bestimmte Werte aus einem String entnehmen Java Basics - Anfänger-Themen 3
I Aus einem String Vorname & Nachname bekommen Java Basics - Anfänger-Themen 2
J Ascii Zeichen von einem String umwandeln und ausgeben Java Basics - Anfänger-Themen 11
B Werte aus JTextArea in einem String Array ablegen Java Basics - Anfänger-Themen 4
D aus einem einzeiligen String ein neues Objekt erstellen Java Basics - Anfänger-Themen 5
J gesamte Hashmap mit Zeilenumbrüchen in einem String Java Basics - Anfänger-Themen 8
A mehrere replace in einem string Java Basics - Anfänger-Themen 3
D String einem String[] hinzfügen Java Basics - Anfänger-Themen 13
C String ab einem bestimmten Char abschneiden??? Java Basics - Anfänger-Themen 7
O Zahlenformatierung in einem String Java Basics - Anfänger-Themen 4
J Von einem String einzelne Wörter speichern Java Basics - Anfänger-Themen 6
D Das 1. Wort aus einem String herauslesen Java Basics - Anfänger-Themen 6
Beckenbauer OOP Durch Komma getrennte Einträge in einem String in ein Array oder eine Tabelle schreiben Java Basics - Anfänger-Themen 4
D Zählen von Umlauten in einem String Java Basics - Anfänger-Themen 4
S Zeichen in einem String hochstellen? Java Basics - Anfänger-Themen 9
M Erstes Zeichen in einem String in Großbuchstaben wandeln Java Basics - Anfänger-Themen 3
C Problem mit der Extraktion von Zahlen aus einem String Java Basics - Anfänger-Themen 8
J Anzahl der Buchstaben in einem String Java Basics - Anfänger-Themen 12
I Wie kann ich ein Wort in einem String suchen Java Basics - Anfänger-Themen 3
Z Sonderzeichen in einem String gezeichnen/bearbeiten Java Basics - Anfänger-Themen 6
S Sonderzeichen in einem String erkennen Java Basics - Anfänger-Themen 20
eXistenZ wert von einem String auf einen Integer ändern =( Java Basics - Anfänger-Themen 6
J Wörter in einem string zählen und die anzahl zurückgeben Java Basics - Anfänger-Themen 4
D Einzelne Ziffern aus einem String Java Basics - Anfänger-Themen 10
M Datentypen Mehrere Integer aus einem String auslesen Java Basics - Anfänger-Themen 4
N an einem String ein zahl anhengen Java Basics - Anfänger-Themen 6
V Anzahl eines Buchstaben in einem String zählen Java Basics - Anfänger-Themen 7
R einen gegebenen String in einem String suchen Java Basics - Anfänger-Themen 6
Developer_X jede Zeile einer Datei mit einem String verketten Java Basics - Anfänger-Themen 16
B String einem Chararray zuweisen Java Basics - Anfänger-Themen 2
J Aus einem String blanks entfernen oder hinzufügen. Java Basics - Anfänger-Themen 9
I Aufkommen eines be*timmten Zeichens in einem String zählen Java Basics - Anfänger-Themen 13
S Anzahl von Zeichen in einem String suchen und zählen Java Basics - Anfänger-Themen 1
T Anzahl eines Strings in einem String-Array Java Basics - Anfänger-Themen 5
B Mehrere Methoden an einem String Java Basics - Anfänger-Themen 6
G Zeilenumbruch in einem String Java Basics - Anfänger-Themen 21
N Bytes in einem String Java Basics - Anfänger-Themen 3
M in einem String vergleichen Java Basics - Anfänger-Themen 9
R Probleme beim umwandeln eines String zu einem Int Wert Java Basics - Anfänger-Themen 3
C bestimmte Buchstaben in einem String ändern Java Basics - Anfänger-Themen 5
H Mehrmaliges vorkommen eines Zeichens in einem String Java Basics - Anfänger-Themen 14
M Input/Output Stream aus einem String Java Basics - Anfänger-Themen 2
N Zahl aus einem String finden und als Integer speichern Java Basics - Anfänger-Themen 3
M Aus einem String bestimmte zeichen auslesen und ausgeben Java Basics - Anfänger-Themen 8
philipp Instanznamen mit einem String bestimmen. Java Basics - Anfänger-Themen 11

Ähnliche Java Themen

Neue Themen


Oben