Я установил формат для String
, который будет всегда: SPXXX-SPYYY.zipИзвлечение номера из фиксированного формата строки
мне нужно извлечь XXX и YYY из String
, но если например XXX 003, тогда я хочу иметь и не 003. (То же самое для YYY).
Я написал эти два кода:
1.
String st = "SP003-SP012.zip";
String[] splitted = st.split("\\.");
splitted = splitted[0].split("-");
splitted = splitted[0].split("P");
Integer in = new Integer(splitted[1]);
System.out.println(in); //Will print 3
//The same for the other part of the String
2.
Pattern pattern = Pattern.compile("^[a-zA-Z]+([0-9]+).*");
Matcher matcher = pattern.matcher(st);
int num = 0;
while (matcher.find()) {
num = Integer.parseInt(matcher.group(1));
System.out.println(num);
}
- Почему второй код возвращает только первый номер? (XXX) и пропускает второй?
- Какой код лучше для этой цели?
Ваш первый код (разделение) и второй уже используют регулярные выражения !! – Juvanis
@Juvanis Я неправильно понял себя :) исправлено. – Maroun