Forum: PC-Programmierung String auf Gleichheit der ersten 3 Buchstaben überprüfen


von Tom (Gast)


Lesenswert?

Allo ich möchte, ohne den Befehl startsWith, einen String auf Gleichheit 
überprüfen. Mir fällt hier der equals Befehl ein.
z.b
String Zk = "abcdef";
if(Zk.equals("ghi")){...;}

so könnte ich allgemein, gucken ob Zk = ghi ist. Nur jetzt möchte ich 
nur die ersten 3 Elemente von Zk auf Gleichheit prüfen. Weiß jemand wie 
das gehen könnte?

von D. I. (Gast)


Lesenswert?

Tom schrieb:
> Weiß jemand wie
> das gehen könnte?

Ja wissen die meisten hier. Nur dass wir hier nicht deine Hausaufgaben 
machen.

von MaWin (Gast)


Lesenswert?

Ich würde
memcmp(Zk,"ghi",3);
nehmen,
Bei einer Definition
char Zk[7];
aber ich programmiere ja auch in C.

von troll (Gast)


Lesenswert?

Vielleicht solltest du mal verraten um welche Sprache es geht...

von Tom (Gast)


Lesenswert?

D. I. schrieb:
> Tom schrieb:
>> Weiß jemand wie
>> das gehen könnte?
>
> Ja wissen die meisten hier. Nur dass wir hier nicht deine Hausaufgaben
> machen.
Danke für deinen Kommentar!



Könnte es so gehen?

String[] Zkneu = new String[3];
for(int i=0;i<3;i++){
    Zkneu[i] = Zk[i];}

if(Zkneu.equals("ghi")){...;}

@MaWin , den Befehl kenne ich nicht und ich möchte auch mit equals 
arbeiten.

von Tom (Gast)


Lesenswert?

troll schrieb:
> Vielleicht solltest du mal verraten um welche Sprache es geht...

Sorry Java

von Stefan Giebler (Gast)


Lesenswert?

troll schrieb:
> Vielleicht solltest du mal verraten um welche Sprache es geht...

das sieht ein Blinder mit Krückstock ... c#

von D. I. (Gast)


Lesenswert?

Tom schrieb:
> Könnte es so gehen?
>
> String[] Zkneu = new String[3];
> for(int i=0;i<3;i++){
>     Zkneu[i] = Zk[i];}
>
> if(Zkneu.equals("ghi")){...;}

Probiers aus, jags durch den compiler und führs aus und schau was es 
tut, wir sind hier nicht in der Chemie.

Jedenfalls die grundlegende Idee ist korrekt ;)

von Tom (Gast)


Lesenswert?

D. I. schrieb:
> Tom schrieb:
>> Könnte es so gehen?
>>
>> String[] Zkneu = new String[3];
>> for(int i=0;i<3;i++){
>>     Zkneu[i] = Zk[i];}
>>
>> if(Zkneu.equals("ghi")){...;}
>
> Probiers aus, jags durch den compiler und führs aus und schau was es
> tut, wir sind hier nicht in der Chemie.
>
> Jedenfalls die grundlegende Idee ist korrekt ;)

Der Compiler sagt: array required, but java.lang.String found

von Peter II (Gast)


Lesenswert?

es gibt doch wohl ein substring in java

if(Zk.Substring(0,3).equals("ghi")){...;}

von D. I. (Gast)


Lesenswert?

Tom schrieb:
> Der Compiler sagt: array required, but java.lang.String found

Und weiter? Verstehe diese Meldung, beseitige die Ursache und dann gehts 
weiter. Nur so lernt man programmieren.

von Tom (Gast)


Lesenswert?

Peter II schrieb:
> es gibt doch wohl ein substring in java
>
> if(Zk.Substring(0,3).equals("ghi")){...;}

Ja gibt es wohl, allerdings substring klein geschrieben.

von Java (Gast)


Lesenswert?

> String[] Zkneu = new String[3];
Was so den der Käse?

Mach dich mal über Datentypen schlau. Vor allem, welcher Unterschied 
zwischen einem Character Array und einem String Array besteht. Und deren 
Vergleichsmöglichkeit.

Es gibt so schöne Bücher. Aber niemand liest diese. heul

von Robert L. (lrlr)


Lesenswert?

Stefan Giebler schrieb:
> troll schrieb:
>> Vielleicht solltest du mal verraten um welche Sprache es geht...
>
> das sieht ein Blinder mit Krückstock ... c#

oder auch nicht..

von Jonas B. (jibi)


Lesenswert?

Alter, mach deine Hausaufgaben selber. Da musste jeder von uns durch und 
abschreiben bringt gar nichts.

Gruß Jonas

von Εrnst B. (ernst)


Lesenswert?

Mensch, das ist doch in Java ganz einfach... man kann einfach die Tools 
nehmen, die für sowas optimal geeignet sind.

 Runtime.getRuntime().exec(new String[]{"perl","-e" .....

:)

von kein Schwätzer (Gast)


Lesenswert?

Jonas Biensack schrieb:
> Alter, mach deine Hausaufgaben selber. Da musste jeder von uns durch und
> abschreiben bringt gar nichts.
>
> Gruß Jonas

Wo ist dein Problem? Braust ihr nicht zu antworten!

Für alle, die es interessiert ich habe es hinbekommen mir hat charAt() 
geholfen.

von Daniel F. (df311)


Lesenswert?

equals vergleicht die objekte auf gleichheit
1
if(Zk.Substring(0,3).equals("ghi")){...;}
wird daher niemals true werden.

unter http://docs.oracle.com/javase/6/docs/api/java/lang/String.html 
findest du zwei methoden, die genau das von dir gewünschte verhalten 
produzieren (tipp: es kommt das englische wort für "vergleichen" darin 
vor)

edith sagt:
wer nicht bis zum ende liest ist selber schuld

kein Schwätzer schrieb:
> Für alle, die es interessiert ich habe es hinbekommen mir hat charAt()
> geholfen.

in dem fall hats vielleicht funktioniert, ist aber nicht unbedingt das 
mittel der wahl, da charAt nur genau eine position liefert (und du damit 
pro verglichener stelle eine abfrage brauchst).

von Peter II (Gast)


Lesenswert?

Daniel F. schrieb:
> equals vergleicht die objekte auf 
gleichheitif(Zk.Substring(0,3).equals("ghi")){...;}
> wird daher niemals true werden.

das lese ich aber was anderes aus der doku

public boolean equals(Object anObject)

    Compares this string to the specified object. The result is true if 
and only if the argument is not null and is a String object that 
represents the same sequence of characters as this object.

von Coffee (Gast)


Lesenswert?

> equals vergleicht die objekte auf gleichheit
> wird daher niemals true werden.
Du solltest eine Dokumentation auch lesen, bevor du auf diese verweist.

> Die Methode equals()
> Die Klasse String überschreibt die aus der Klasse Object geerbte Methode 
equals(), um > > zwei Strings vergleichen zu können. Die Methode gibt true zurück, 
falls die Strings gleich > lang sind und Zeichen für Zeichen übereinstimmen.

von Karl H. (kbuchegg)


Lesenswert?

kein Schwätzer schrieb:

> Für alle, die es interessiert ich habe es hinbekommen mir hat charAt()
> geholfen.

Das klingt nach keiner guten Lösung.
Hast du ALLE Sonderfälle berücksicht? Auch die in denen dein String zb 
kürzer als 3 Zeichen ist?

von Läubi .. (laeubi) Benutzerseite


Lesenswert?

Daniel F. schrieb:
> equals vergleicht die objekte auf gleichheit

Ja und Nein, equals Vergleicht, das zwei Objektreferenzen nach Ansicht 
des Objekterstellers gleichen, so wie sich zwei Eier gleichen aber doch 
nicht die selben sind.

Ob es das selbe Objekt ist vergleicht man mit ==

Und wie schon korrekt festgestellt wurde, so ist bei Strings die 
Definition für gleich/equals, dass sie die selbe Länge haben und Zeichen 
für Zeichen übereinstimmen, was auch so in der von dir verlinkten Doku 
steht.

compareTo ist wieder ein anderes Thema, und der einzige Kontrakt ist, 
das wenn compareTo 0 zurück-liefert auch equals true liefern sollte (und 
umgekehrt), das ist aber nicht zwingend.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.