Du verwendest einen veralteten Browser. Es ist möglich, dass diese oder andere Websites nicht korrekt angezeigt werden. Du solltest ein Upgrade durchführen oder ein alternativer Browser verwenden.
kann mir jemand verraten, wie ich aus einem string einen integer bauen kann. leider kann ich die methode Integer.parseInt(String) nicht verwenden. der string besteht aus bustaben und zahlen. die zahlen aus dem string brauche ich als integer, alles andere soll ignoriert werden..
bsp: "78" zu 78
"wert: 78" zu 78
"7jkjkjkölkj8" zu 78
"ds7 dcdcd 8" zu 78
und dann habe ich noch ne frage, gibt es ne möglichkeit leerzeichen aus eine, string zu löschen??
die charat variante gefällt mir gut, also eine schleife drüber laufen lassen, was ist das letzte zeichen eines strings \0 oder was anderes? und dann muss ich dann fragen if (charvar==1||cahrvar==2...
\0 nein... das ist kein c, Das array ist so lange wie der String...
== nein du kannst mit > und < arbeiten >='0' && <='9' aufpassen '0' ist nicht 0 denn das zeichen '0' hat nicht den ascii code 0
oh, danke, also .length die länge herausfinden und dann bis ans ende. die ascii zeichen für '0' bis '9' sind in ascii also fortluafend? also '0' ist ascii x, '9' ist ascii x+9
gibts was zum leerzeichen entfernen aus nem string??
danke für die vielen tipps.. so richtig funktioniert es noch nicht.. muss jetzt erst,al kopf lüften..
so geht es jedenfalls nicht
Java:
import java.lang.String;
import java.util.regex.*;
public class test {
public static void main(String[] args) {
String test="21jkl34";
String help="";
int ausgabe;
for(int i=0;i<test.length();i++){
if(test[i]>='0'&&test[i]<='9') {
help=help+test[i];
}
}
ausgabe=Integer.parseInt(help);
ausgabe++;
System.out.println(ausgabe);
}
}
werd heute abend auch nochmal marcos variante versuchen.. aber so ganz richtig verstehe ich die beschreibungen immer noch nicht.. weiss immer nicht genau, was man dann in den import schreiben muss.. aber das finde ich auch noch raus..
danke erstmal für die schnellen antworten.. bis später
du musst den String test erst in ein char[] umwandeln (test.toCharArray()) oder test.charAt(i) benutzen.
test ist ein deinem Fall kein Array also ist der Zugriff per Index nicht möglich. Das ist nicht Python
public static int stringClutterToInt(String s) {
int res = 0;
for (int i = 0; i < s.length(); i++) {
if (Character.isDigit(s.charAt(i))) {
res = res * 10 + Character.getNumericValue(s.charAt(i));
}
}
return res;
}
public static void main(String[] args) {
System.out.println(stringClutterToInt("78"));
System.out.println(stringClutterToInt("wert: 78"));
System.out.println(stringClutterToInt("7jkjkjkölkj8"));
System.out.println(stringClutterToInt("ds7 dcdcd 8"));
}
public static int stringClutterToInt(String s) {
int res = 0;
for (int i = 0; i < s.length(); i++) {
if (Character.isDigit(s.charAt(i))) {
res = res * 10 + Character.getNumericValue(s.charAt(i));
}
}
return res;
}
public static void main(String[] args) {
char[] longCharArray = new char[128];
for (int i = 0; i < longCharArray.length; i++) {
longCharArray[i] = (char) (Math.random() * 256.0);
}
System.out.println(new String(longCharArray));
for (int i = 0; i < longCharArray.length; i++) {
if (longCharArray[i] >= '0' && longCharArray[i] <= '9') {
System.out.print(longCharArray[i]);
}
}
System.out.println("");
System.out.println(stringClutterToInt(new String(longCharArray)));
}
Solange Du dich nur im Bereich 0-255 bewegst hast Du kein Unicode und da hat (wenn man es genau nimmt) die Verwendung von Character nichts zu suchen - zumindest wenn man die Maßstäbe des Forums hier annimmt.
Im ASCII-Codespace auf '0' - '9' zu prüfen und eine char-to-int Wandlung via Integer oder durch banale Umrechnung ist seit Ewigkeiten Goldstandard…
Solange Du dich nur im Bereich 0-255 bewegst hast Du kein Unicode und da hat (wenn man es genau nimmt) die Verwendung von Character nichts zu suchen - zumindest wenn man die Maßstäbe des Forums hier annimmt.
\u0666 ist doch einfach die arabische Darstellung der lateinischen 6. Integer.parseInt hat damit auch kein Problem und erkennt das völlig korrekt als 6.
Java:
public class UnicodeNumbers {
public static void main(final String[] args) {
// char ch = '\u216C'; // latin "L" = FALSE 50
final char ch = '\u0666'; // Arabisch "٦" = TRUE 6
System.out.println(ch);
System.out.println("Is digit? " + Character.isDigit(ch));
System.out.println("Numeric ? " + Character.getNumericValue(ch));
System.out.println("Integer: " + Integer.parseInt(String.valueOf(ch)));
}
}
Wir haben dass Arabische Zahlensystem und im Lateinischen wird "6" als "VI" geschrieben (wird gerne verwechselt).
Ansonsten hast Du natürlich vollkommen recht: die Lateinische Zahl "L" wird nicht als Digit erkannt, die Arabisch-Indogenen Ziffern schon und daher klappt das mit Radix 10 bei Integer.
Trotzdem halte ich die Nutzung von Character#isDigit etc. für sch**isse für sowas - das ist wie in Java monolithisch-prozedural zu Programmieren (geht, taugt aber nix).