Foro sobre Java EE > Obtener dato de un String
Lo que define lo que quieres buscar, ¿qué es? ¿Es una posición fija en la cadena? ¿Son las secuencias de puntos .. y ...? ¿Es, simplemente, que comienza por End o por Coord?
Lo primero sería con String.substring(int begin, int end);
Lo segundo podría ser con una expresión regular.
Lo tercero con String.indexOf("End")
o String.indexO("Cood")
y desde ahí ya coges el resto de la cadena que necesitas.
Respecto a la expresión regular, sería algo así (ojo, que no lo he probado, no uso expresiones regulares con regularidad, valga el chascarrillo): :-)
Pattern p = Pattern.compile("\.\.(.*)\.\.\."); // End, espacio, dígito, dígito
Matcher m = p.matcher(socketResult); // socketResult es la cadena recibida por el socket
if (m.matches()) {
String result = m.group();
}
Buenas!! Gracias por tu respuesta. Lo que define mi busqueda no es posición, es solo esas letras "Coord" y "End 02" (el 02 puede ser otro numero) y necesito extrarer esa información.
La cosa es que he usado esto que me comentas: String.indexO("End") pero me devuelve un numero, y yo necesito que me devuelva el nombre del dispositivo con el numero detrás. Es decir, de esas tramas necesito identificar el nombre de los dispositivos junto con el numero que les sigue, es decir End 02, End 06... no se si me entiendes?
Sí, te entiendo, pero ¿no deberías esforzarte un poquito más tú? :-) Si ya tienes la posición donde comienza, aplica la misma técnica para identificar dónde acaba el identificador y extraerlo con substring().
La otra opción, que seguramente es más eficiente y profesional, es usar expresiones regulares, como te he comentado.
Buenas!
Se que lo que voy a preguntar no es muy difícil, pero estoy atascado y no doy con la clave...
Tengo un string que recibo a partir de un socket, lo que recibo es una trama parecida a estos dos ejemplos:
"0x00000000 10 02 01 02 02 0C 00 00 00 00 99 CF 00 01 ..End.02..."
"0x00000000 10 02 01 02 02 0C 00 00 00 00 99 CF 00 01 ..Coord..."
Por ejemplo, la cosa es que quiero extraer solo el Coord y el End 02. Se que puedo usar una función que busque el caracter C ó E, la pregunta es, como le digo que saque desde la E hasta el 2? Porque depende del dispositivo que emita información sera End 02, End 03...
Un Saludo y Muchas Gracias!!