Stack Overflow en español Asked by JP711 on November 10, 2021
Tengo un String llamado "frase" que va a contener cantidades de un producto y quiero extraer lo siguiente:
Por ejemplo:
frase = "2 kilos 350 gramos de Huevo"
Quiero obtener 3 string con lo siguiente:
String kilos = "2";
String gramos = "350";
String producto = "Huevo";
Se que con contains
puedo verificar si contiene las palabras (kilos, gramos, producto) pero como obtengo el texto o numero posterior o anterior a dichas palabras?
EDICIÓN
El String no siempre tiene la misma estructura, es decir puede no haber producto o puede no haber kilos, o incluso pueden haber palabras adicionales, un ejemplo:
frase = "calcular precio 200 gramos de aguacate"
En este caso la salida es:
kilos = "";
gramos = "200";
producto= "aguacate";
Te doy otra manera de hacerlo que para mi gusto no es nada elegante pero quizas te pueda ayudar en que encuentres lo que en relidad necesitas.
final String phrase = "2 kilos 350 gramos de Huevo";
String kilos = "";
String gramos = "";
String producto = "";
Pattern p = Pattern.compile("\S+(\s\S+)?");
Matcher m = p.matcher(phrase);
while (m.find()){
if(m.group().toLowerCase().contains("kilos")) {
kilos = m.group().split(" ")[0];
}else if (m.group().toLowerCase().contains("gramos")){
gramos = m.group().split(" ")[0];
}else if(m.group().toLowerCase().contains("de")){
producto = m.group().split(" ")[1];
}
}
System.out.println("Kilos : " + kilos);
System.out.println("Gramos : " + gramos);
System.out.println("Producto: " + producto);
Answered by Cesar Salas on November 10, 2021
Puedes hacer eso con una expresión regular:
final Pattern rx = Pattern.compile("(\d+) kilos (\d+) gramos de (\w+)");
final String phrase = "2 kilos 350 gramos de Huevo";
final Matcher matcher = rx.matcher(phrase);
if (matcher.matches()) {
System.out.println("Kilos : " + matcher.group(1));
System.out.println("Gramos : " + matcher.group(2));
System.out.println("Producto: " + matcher.group(3));
}
Produce:
Kilos : 2
Gramos : 350
Producto: Huevo
Answered by andreoss on November 10, 2021
Get help from others!
Recent Answers
Recent Questions
© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP