Foros del Web » Programación para mayores de 30 ;) » Java »

cambio de palabra de un texto

Estas en el tema de cambio de palabra de un texto en el foro de Java en Foros del Web. buenas... Me encuentro haciendo un pequeño compilador para sintaxis de SQL. bueno... Quisiera saber si en java existe alguna clase que busque una palabra de ...
  #1 (permalink)  
Antiguo 06/10/2011, 18:45
 
Fecha de Ingreso: mayo-2011
Ubicación: sinaloa
Mensajes: 150
Antigüedad: 13 años
Puntos: 4
cambio de palabra de un texto

buenas...
Me encuentro haciendo un pequeño compilador para sintaxis de SQL.


bueno...
Quisiera saber si en java existe alguna clase que busque una palabra de unaa cadena es decir busque un token dentro de la cadena y que tamien la pueda modificar borrar, eliminar, agregar etc en la misma posicion....

haver esto seria un ejemplo::::

String texto="hola mundo en java"
//yo quiero saber si existe mundo y si existe modificarlo.

esto lo hice yo con StringTokenicer perose me hace una manera muy rebundante, he escuchado algo de expresiones regulares pero no les entiendo muy bien.espero me puedan ayudar grcias
  #2 (permalink)  
Antiguo 06/10/2011, 19:21
Avatar de Carlangueitor
Moderador ლ(ಠ益ಠლ)
 
Fecha de Ingreso: marzo-2008
Ubicación: México
Mensajes: 10.037
Antigüedad: 16 años, 1 mes
Puntos: 1329
Respuesta: cambio de palabra de un texto

Puedes usar split(), que te retorna un arreglo.

Saludos
__________________
Grupo Telegram Docker en Español
  #3 (permalink)  
Antiguo 07/10/2011, 02:48
Avatar de Xerelo  
Fecha de Ingreso: mayo-2009
Mensajes: 2.175
Antigüedad: 15 años
Puntos: 306
Respuesta: cambio de palabra de un texto

Si quieres saber si se puede hacer determinadas cosas con strings, lo inteligente es ir a la API, leerla. Incluso si estás usando un IDE, te ofrecerá esa misma información mientras programas.

http://download.oracle.com/javase/6/...ng/String.html

Métodos contains() y replace() de String

Para cosas más avanzadas Pattern y Matcher

http://download.oracle.com/javase/tu...sential/regex/
__________________
Cada vez que solucionas los problemas de alguien que no se esfuerza, piensa en que el día de mañana puede llegar a ser tu compañero de trabajo, o peor, tu jefe.
  #4 (permalink)  
Antiguo 12/10/2011, 09:25
Avatar de DeeR  
Fecha de Ingreso: diciembre-2003
Ubicación: Santiago
Mensajes: 520
Antigüedad: 20 años, 4 meses
Puntos: 17
Respuesta: cambio de palabra de un texto

Como dice Xerelo, puedes usar contains y replace

ejemplo, reemplazar todas las coincidencias de mundo por world
Código JAVA:
Ver original
  1. String t = "Hola mundo en Java para todo el mundo";
  2.             if ( t.contains("mundo")  )
  3.             {
  4.                 System.out.println(  t.replaceAll("mundo","world")  );
  5.             }


Ahora, creo que las expresiones regulares te pueden ayudar más al tratar de buscar y reemplazar tokens (ya que pueden estar escritas de distintas formas)

ejemplo, normalizar el token "select" a SELECT (mira que dice SeLECT en el string query)
Código JAVA:
Ver original
  1. String query = "SeLECT id ,   title FrOm contents";
  2.             // Reemplazo de doble espacios
  3.             if ( query.contains("  ")  )
  4.             {
  5.                 query = query.replaceAll("  ","");
  6.             }
  7.             Pattern select_pt = Pattern.compile("((S|s){1}(E|e){1}(L|l){1}(E|e){1}(C|c){1}(T|t){1})");
  8.             Matcher select_mt = select_pt.matcher(query);
  9.             if ( select_mt.find() )
  10.             {
  11.                 query = query.replace(  select_mt.group(0) , "SELECT" );
  12.             }


Para finalizar, lo más formal, al tratar de realizar un compilador, es utilizar herramientas donde puedas ingresar tu gramatica en BNF, hacer un lexer, parser, etc. JFlex y Cup te pueden ayudar, eso sí, requieren un conocimiento un poco más avanzado de Java y tal vez sobre teoría de compiladores.


Saludos

Etiquetas: palabra, sql
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 03:35.