Dividir Cadeia deppending de caracteres em Java

Jürgen K .:

Dada é a seguinte string (uma linha):

a_Type_of_Data 0.847481:611x569+446+1200,0.515323:597x762+448+1101,0.587354:597x558+488+1207

Gostaria de dividi-lo assim [611, 559, 446, 1200], [597, 762, 448, 1101], [597, 558, 488, 1207] Então, basicamente para obter os 4 números entre cada ":" e "" independentemente dos caracteres entre os números.

Já tentou dividir a string em "", mas então eu ainda tenho o problema do número em frente ':'. Ou a ir todos juntos como usarstring result = Regex.Replace(input, @"[^\d]", "");

Existe uma maneira de fazer isso com regex? Desde já, obrigado.

Pushpesh Kumar Rajwanshi:

Primeiro você pode usar esse regex \d+x\d+(?:\+\d+){2}para coincidir com esses números separados por xe +e depois dividir aquelas cordas individuais usando [x+]o que lhe dará uma outra matriz de números.

Verifique este código Java,

String s = "a_Type_of_Data 0.847481:611x569+446+1200,0.515323:597x762+448+1101,0.587354:597x558+488+1207";
Pattern p = Pattern.compile("\\d+x\\d+(?:\\+\\d+){2}");
List<List<String>> list = new ArrayList<>();

Matcher m = p.matcher(s);
while(m.find()) {
    String[] data = m.group().split("[x+]");
    list.add(Arrays.asList(data));
}
list.forEach(System.out::print);

Imprime a saída como você esperava,

[611, 569, 446, 1200][597, 762, 448, 1101][597, 558, 488, 1207]

Acho que você gosta

Origin http://43.154.161.224:23101/article/api/json?id=192840&siteId=1
Recomendado
Clasificación