# Anzahl Zahlen in String



## Mongo112 (15. Aug 2012)

Irgendwie sehe ich langsam den Wald vor lauter Bäumen nicht mehr. 2 andere Probleme konnte ich schon mithilfe der Suche lösen, aber hier stehe ich wirklich an.

Und zwar habe ich einen String, der auf die Anzahl der darin enthaltenen Zahlen durchsucht werden sollen.

Ich dachte da an eine Schleife:


```
String xy = "asdjhkjh1223444hjgjkh6758578   4749291ghjk";
int count = 0;
for (int i = 0; i < xy.length(); i++){
if (das Zeichen [i] = eine Zahl) {
count = count +1;
}
}
return count;
```

Was gehört ins if hinein?


----------



## tribalup (15. Aug 2012)

Schau mal ob du mit Integer.parseInt() was anfangen kannst.


----------



## eRaaaa (15. Aug 2012)

xy.length -> length()
count + count = 0 + 0 = immer 0 

Aber um deine Frage zu beantworten, wirf mal einen Blick in 
String (Java Platform SE 6)
Character (Java Platform SE 6)
das könnte weiterhelfen. Natürlich gibt`s auch andere Lösungen....


----------



## hüteüberhüte (15. Aug 2012)

Alle Zeichen zählen oder nur ein bestimmtes? Du musst dich schon mitteilen...


----------



## eRaaaa (15. Aug 2012)

hüteüberhüte hat gesagt.:


> Alle Zeichen zählen oder nur ein bestimmtes? Du musst dich schon mitteilen...



Zahlen!


----------



## hüteüberhüte (15. Aug 2012)

eRaaaa hat gesagt.:


> Zahlen!




```
if (c >= '0' && c <= '9')
   cnt++;
```

;(


----------



## Mongo112 (15. Aug 2012)

Danke für die zahlreichen Antworten! :toll:

@eRaaa: sorry, () vergessen... 
*counter += counter* ist doch gleich wie *counter = counter +1*, oder?

@hüteüberhüte: blöde Frage: c ist ein char, also ist im obigen Beispiel xy kein String, sonder ein Chararray, oder?


----------



## hüteüberhüte (15. Aug 2012)

Ja, sieh dir auch mal an:
String (Java Platform SE 6)
Character (Java Platform SE 6)

...


----------



## eRaaaa (15. Aug 2012)

Mongo112 hat gesagt.:


> Danke für die zahlreichen Antworten! :toll:
> 
> @eRaaa: sorry, () vergessen...
> *counter += counter* ist doch gleich wie *counter = counter +1*, oder?
> ...



Nö

counter++ wäre counter = counter+1 (oder counter+=1)
counter+= counter ist counter = counter + counter



Spoiler: Klick



Mit Regex ist die Aufgabe übrigens in einer Zeile gelöst


----------



## Mongo112 (15. Aug 2012)

Danke, da war ich mir nie sicher.

Wie genau würde man das mit Regex lösen können?


----------



## eRaaaa (15. Aug 2012)

Mongo112 hat gesagt.:


> Wie genau würde man das mit Regex lösen können?



Och, eig. ganz simpel -> Pattern (Java Platform SE 6)

Ich werde irgendwie das Gefühl nicht los, dass wir gerade deine Hausaufgaben machen


----------



## Mongo112 (15. Aug 2012)

Ich gehe nicht mehr zur Schule. Und da ich aus Österreich komme (Tirol) hätte ich derzeit noch Ferien.


----------



## hüteüberhüte (15. Aug 2012)

Für ein Danke mache ich das  :


```
Matcher m = Pattern.compile("\\d").matcher(str);
while (m.find())
  cnt++;
```

Allerdings bekomme ich das nicht in einer Zeile hin..


----------



## eRaaaa (15. Aug 2012)

hüteüberhüte hat gesagt.:


> Allerdings bekomme ich das nicht in einer Zeile hin..





Spoiler





```
int count = xy.replaceAll("\\D", "").length();
```
:bae:


----------



## Mongo112 (15. Aug 2012)

Ich danke euch beiden! 

Und ich kann euch garantieren, dass das nichts mit Schule oder Uni zu tun hat, da ich mich derzeit nur ein wenig mit den Stringfunktionen spiele und alles austesten möchte.


----------



## Hüte (15. Aug 2012)

eRaaaa hat gesagt.:


> Spoiler
> 
> 
> 
> ...



.replaceAll ist aber eine String-Funktion  Mit Strings hab ich jetzt nicht gerechnet


----------



## Mujahiddin (16. Aug 2012)

Hier noch eine weitere Lösung (ähnelt ein bisschen der von hüte)

```
int zahlen = myString.replaceAll("\\D", "").length();
```

E: okay habe den "Weiterlesen"-Button von eRaaa übersehen...


----------



## hüteüberhüte (16. Aug 2012)

Mujahiddin hat gesagt.:


> Hier noch eine weitere Lösung (ähnelt ein bisschen der von hüte)
> 
> ```
> int zahlen = myString.replaceAll("\\D", "").length();
> ...



am performantesten müsste immer noch http://www.java-forum.org/java-basics-anfaenger-themen/140283-anzahl-zahlen-string.html#post930134 sein.


----------



## Mujahiddin (16. Aug 2012)

hüteüberhüte hat gesagt.:


> am performantesten müsste immer noch http://www.java-forum.org/java-basics-anfaenger-themen/140283-anzahl-zahlen-string.html#post930134 sein.



Wahrscheinlich, ja, aber nur, weil Regex intern leicht aufwändig ist (bzw. sein sollte, ist eine Vermutung)... Ich glaube aber, auf die Millisekunden (wenn überhaupt) kommt's nicht an.


----------



## hüteüberhüte (16. Aug 2012)

Nein, das nicht. Aber innerhalb der Schleife wird es nicht unter (maximal) zwei Vergleichen und einer Inkrementierung gehen 

Mich beschleicht aber echt das Gefühl, dass wir hier Hausaufgaben machen. Als nächstes kommt bestimmt, jede einzelne Ziffer oder alle Zeichen zählen.

Wo bleibt die Eigeninitiative???


----------



## Mujahiddin (17. Aug 2012)

hüteüberhüte hat gesagt.:


> Nein, das nicht. Aber innerhalb der Schleife wird es nicht unter (maximal) zwei Vergleichen und einer Inkrementierung gehen
> 
> Mich beschleicht aber echt das Gefühl, dass wir hier Hausaufgaben machen. Als nächstes kommt bestimmt, jede einzelne Ziffer oder alle Zeichen zählen.
> 
> Wo bleibt die Eigeninitiative???



Das meine ich ja. Das mit der Schleife ist wohl die einfachste Methode, Regex läuft intern höchstwahrscheinlich viel komplizierter.

Kann sein, dass das Hausaufgaben sind - aber kann doch auch sein, dass er nur aufm Schlauch lag. Ich halt mich da raus. :/


----------



## Mongo112 (13. Sep 2012)

So, ich komme gerade aus dem Urlaub zurück. Nochmals: da war weder für die Schule, noch für die Uni oder sonstwas. Ich habe nur ein paar Stringfunktionen ausprobiert, mehr nicht...


----------

