Манипуляция строк в Java: разбить строку после чисел - PullRequest
0 голосов
/ 02 сентября 2011

Моя строка имеет такую ​​форму XxYxZx

X, Y и Z - символы, а x - числа, которые могут варьироваться от 0 до 999.

Я хочу разбить эту строку в этой форме,Как это можно сделать?

  1. Xx
  2. Yx
  3. Zx

Пример:

 Input:  "A155B45C77D89" 
 Output: "A155", "B45", "C77", "D89"

Ответы [ 2 ]

8 голосов
/ 02 сентября 2011
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}) говорит "соответствует всем подстрокам , за которыми следует цифра, за которой следует буквенный символ .

В такой строке, как "A155B45C77D89", этому выражению соответствует пустые подстроки

A155 B45 C77 D89
    ^   ^   ^
  here  |   |
       here |
            |
        and here
1 голос
/ 02 сентября 2011
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
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...