ich kann nix

Status
Nicht offen für weitere Antworten.

steff3

Bekanntes Mitglied
also
Code:
public static void main(String[] args) {
		
		String test = "Ic?h:Du";
		String get;
		
		get = test.replaceAll("Ic?h"+ ":", "");
		
		System.out.println(get);

	}

das ? macht probleme, erwarten würde ich "Du", aber ne "Ic?h:Du" kommt raus
fragt sich nur noch wieso
 

merxleben

Aktives Mitglied
Hi,

steff3 hat gesagt.:
also
das ? macht probleme, erwarten würde ich "Du", aber ne "Ic?h:Du" kommt raus
fragt sich nur noch wieso

Weil es nichts zu ersetzen gibt. In deinem RegEx "Ic?h:" suchst du nach der Zeichenfolge "I" gefolgt von einem oder keinem "c" gefolgt von "h:". Also entweder "Ich:" oder "Ih:". Die Zeichenkette, in der du ersetzen willst sieht aber nicht so aus. Das Verhalten hierfür resultiert aus der Sonderbedeutung des Fragezeichens. Das Zeichen, daß vor einem Fragezeichen steht, soll entweider genau einmal oder garnicht auftreten.

Ich vermute, dass du genau nach der Zeichenfolge "Ic?h:" suchen möchtest. Dafür müßte der RegEx so aussehen "Ic\?h:". Allgemein würde ich Dir empfehlen, beschäftige dich mal mit regularen Ausdrücken.

Ich hoffe, ich konnte dir helfen

Martin
 

LoN_Nemesis

Bekanntes Mitglied
Das liegt an den regulären Ausdrücken. Dein "?" im String wird nicht als normales Zeichen gewertet, sondern als Teil eines regulären Ausdruckes. Diese sind sehr mächtig, aber bei einfachen Sachen braucht man sie natürlich manchmal nicht. Dann musst du einfach deinen Code so abändern:

Code:
get = test.replaceAll("Ic\\?h"+ ":", "");

Mit den \\ sagst du, dass das nächste Zeichen nur genau so gewertet werden soll wie es dasteht.



Mist, da war jemand schneller mit der Antwort ;)
 

steff3

Bekanntes Mitglied
die \\ , \n und \t ... geschichte ist mir ja bekannt, aber dass das ? auch dazu gehört ist mir echt neu
naja, danke :D
 

LoN_Nemesis

Bekanntes Mitglied
Das ist nur bei regulären Ausdrücken so, und die sind in Java relativ neu.

Also wenn du sowas hast

Code:
String test = "Ic?h:Du";
System.out.println(test);

Dann wird in der Konsole wie vermutet Ic?h:Du stehen, das ? ist in diesem Fall ein normales Zeichen.
Aber bei Methoden bei denen in der Dokumentation irgendwas von "String regex" steht, da zählen so Zeichen wie ? * . etc als reguläre Ausdrücke.
 
S

stev.glasow

Gast
ich *meld*
Hatte dich erst dichtgelabert weil du auf java rumhackst (bzw. C++ wegen dieser Geschichte hier besser sein soll )obwohl du sogut wie keine Ahung hast.
Weißt du überhaupt was RegEx sind? Hast du dir einmal die Beschreibung zu der Methode in der java Doc angesehen? Nöö - hast nicht.

Aber da dichtlabern suckt hab ich das noch fix rausgenommen und einfach deinen dämlichen Titel geändert ...

obwohl ich dich nun doch volllabern musste - schied.

Wenn einer null Ahnung hat is ja nicht so wild - aber dann meinen das C++ besser ist weil Java das nicht kann ... ne du.
 

steff3

Bekanntes Mitglied
stevg hat gesagt.:
ich *meld*
Hatte dich erst dichtgelabert weil du auf java rumhackst (bzw. C++ wegen dieser Geschichte hier besser sein soll )obwohl du sogut wie keine Ahung hast.
Weißt du überhaupt was RegEx sind? Hast du dir einmal die Beschreibung zu der Methode in der java Doc angesehen? Nöö - hast nicht.

Aber da dichtlabern suckt hab ich das noch fix rausgenommen und einfach deinen dämlichen Titel geändert ...

obwohl ich dich nun doch volllabern musste - schied.

Wenn einer null Ahnung hat is ja nicht so wild - aber dann meinen das C++ besser ist weil Java das nicht kann ... ne du.

du glaubst wohl auch in bin seit gestern dabei und nen c++ fanboy, der gerade mal so ne klasse zusammenschreiben kann? - so dass ne konsolenanwendung entsteht mit der man den notendurchschnitt errechnen kann?

für mich ist c++ halt die sprache mit der ich - lass mich überlegen 2003 angefangen habe
und mit std::string hatte ich noch nie probleme

und meine probleme kann ich meist sehr wohl mit msdn, der sun.comi oder java ist auch eine insel lösen

außerdem habe ich genügend kenntnisse was algorithmen und andere theorie angeht im unterricht gesammelt - jetzt bin ich klasse 13

deshalb würde ich mal vorschlagen nicht jeden unterschätzen und gleich mit null ahnung kommen
sicher haste mehr ahnung von java
aber ich erzähl dir ja auch nix über miranda
 

Leroy42

Top Contributor
steff3 hat gesagt.:
aber ich erzähl dir ja auch nix über miranda

:shock: Kennst du dich etwas mit Miranda aus? Wird das denn noch gepflegt?

Ich habe seit dem Artikel über Miranda im Spektrum der Wissenschaft (*schwärm*)
nichts mehr von dieser Sprache gehört :(
 

steff3

Bekanntes Mitglied
Leroy42 hat gesagt.:
steff3 hat gesagt.:
aber ich erzähl dir ja auch nix über miranda

:shock: Kennst du dich etwas mit Miranda aus? Wird das denn noch gepflegt?

Ich habe seit dem Artikel über Miranda im Spektrum der Wissenschaft (*schwärm*)
nichts mehr von dieser Sprache gehört :(

mal überlegen wir habens emulieren müssen, weil es nur für unix nen uralt interpreter gibt
haskell ist da einfach moderner

die begründung unseres lehrer war, dass miranda einfacher ist

sonst ist miranda tot
 
S

stev.glasow

Gast
Ich habe 2 Jahre als Gastprofessor in princeton Miranda unterrichtet und du hast überhaupt nicht verstanden um was es geht, wirst du auch nicht mehr und ich hätte das wie gesagt gleich sein lassen sollen *closed*

P.S.@rest Im Titel stand vorher "deswegen ist c++ besser als java" oder sowas ähnliches ...
 
Status
Nicht offen für weitere Antworten.

Oben