Моя строка имеет такую форму XxYxZx
X, Y и Z - символы, а x - числа, которые могут варьироваться от 0 до 999.
Я хочу разбить эту строку в этой форме,Как это можно сделать?
Пример:
Input: "A155B45C77D89" Output: "A155", "B45", "C77", "D89"
String myString="A155B45C77D89"; String[] parts = myString.split("(?<=\\d)(?=\\p{Alpha})"); System.out.println(Arrays.toString(parts));
Вывод:
[A155, B45, C77, D89]
Объяснение:
String.split работает с регулярными выражениями.Регулярное выражение (?<=\d)(?=\p{Alpha}) говорит "соответствует всем подстрокам , за которыми следует цифра, за которой следует буквенный символ .
String.split
(?<=\d)(?=\p{Alpha})
В такой строке, как "A155B45C77D89", этому выражению соответствует пустые подстроки
"A155B45C77D89"
A155 B45 C77 D89 ^ ^ ^ here | | here | | and here
public static void main(String[] args) { Pattern p = Pattern.compile( "([A-Z])([0-9]+)" ); Matcher m = p.matcher( "X01Y123Z99" ); while ( m.find() ) { System.out.println( m.group( 1 ) + " " + m.group( 2 ) ); } }
печать
X 01 Y 123 Z 99