J'ai le String a="abcd1234"
et je souhaite le scinder en String b="abcd"
et Int c=1234
. Ce code Split devrait s'appliquer à toutes les entrées majeures, telles que ab123456 et acff432, etc. Comment diviser ce genre de cordes. C'est possible?
Vous pouvez essayer de diviser une expression régulière telle que (?<=\D)(?=\d)
. Essaye celui-là:
String str = "abcd1234";
String[] part = str.split("(?<=\\D)(?=\\d)");
System.out.println(part[0]);
System.out.println(part[1]);
va sortir
abcd
1234
Vous pouvez analyser le chiffre String en Integer avec Integer.parseInt(part[1])
.
Vous pouvez faire le prochain:
split("(?=\\d)(?<!\\d)")
Utilisez une expression régulière:
Pattern p = Pattern.compile("([a-z]+)([0-9]+)");
Matcher m = p.matcher(string);
if (!m.find())
{
// handle bad string
}
String s = m.group(1);
int i = Integer.parseInt(m.group(2));
Je n'ai pas compilé cela, mais vous devriez avoir l'idée.
Utilisez regex "[^ A-Z0-9] + | (? <= [AZ]) (? = [0-9]) | (? <= [0-9]) (? = [AZ] ) "pour diviser la piqûre en alphabets et en chiffres.
par exemple.
String str = "ABC123DEF456";
Ensuite, la sortie en utilisant cette expression rationnelle sera:
ABC 123 DEF 456
Pour le code complet, veuillez visiter l'URL suivante:
http://www.zerotoherojava.com/split-string-by-characters-and-numbers/
Une solution de force brute.
String a = "abcd1234";
int i;
for(i = 0; i < a.length(); i++){
char c = a.charAt(i);
if( '0' <= c && c <= '9' )
break;
}
String alphaPart = a.substring(0, i);
String numberPart = a.substring(i);