CAAD

Comunidad de Aventuras Conversacionales y Relatos Interactivos
Fecha actual 16 Jul 2020 05:58

Todos los horarios son UTC + 1 hora




Nuevo tema Responder al tema  [ 9 mensajes ] 
Autor Mensaje
NotaPublicado: 18 Dic 2010 11:49 
Desconectado
xyzzy

Registrado: 09 Mar 2004 22:50
Mensajes: 9150
containsIgnoreCase()
¿No existe un método similar?
Si no existe creo que sería interesante crearlo, porque a veces interesa que en un string no se tenga en cuenta la capitalizaciones.

editado para cambiar el asunto

_________________
Si la mentira tuviera color, todos seríamos daltónicos...


Última edición por jenesis el 19 Dic 2010 11:13, editado 2 veces en total

Arriba
 Perfil  
 
NotaPublicado: 18 Dic 2010 11:56 
Desconectado
Samudio
Samudio
Avatar de Usuario

Registrado: 09 Mar 2004 16:16
Mensajes: 5312
Ubicación: Coruña
No existe, y no se puede crear como tal porque la clase String es de java y yo no puedo redefinir sus métodos. Sí que podría crear una función beanshell containsIgnoreCase(s1,s2) pero no un método s1.containsIgnoreCase(s2) como el otro contains.

De todas formas, con los métodos de la API estándar, esto también se puede conseguir simplemente operando sobre las cadenas pasadas a mayúsculas o minúsculas:

cadena.toLowerCase().contains("hola") se comportará como si fuese cadena.containsIgnoreCase("hola")
cadena1.toLowerCase().contains(cadena2.toLowerCase()) se comportará como si fuese cadena1.containsIgnoreCase(cadena2)

_________________
Actúa siempre de tal modo que las decisiones de tu voluntad pudiesen servir como preceptos de una legislación universal (E. Kant)


Arriba
 Perfil  
 
NotaPublicado: 18 Dic 2010 12:07 
Desconectado
xyzzy

Registrado: 09 Mar 2004 22:50
Mensajes: 9150
Al-Khwarizmi escribió:
No existe, y no se puede crear como tal porque la clase String es de java y yo no puedo redefinir sus métodos. Sí que podría crear una función beanshell containsIgnoreCase(s1,s2) pero no un método s1.containsIgnoreCase(s2) como el otro contains.

De todas formas, con los métodos de la API estándar, esto también se puede conseguir simplemente operando sobre las cadenas pasadas a mayúsculas o minúsculas:

cadena.toLowerCase().contains("hola") se comportará como si fuese cadena.containsIgnoreCase("hola")
cadena1.toLowerCase().contains(cadena2.toLowerCase()) se comportará como si fuese cadena1.containsIgnoreCase(cadena2)


Sí, el primer ejemplo me viene al dedillo. :D
Gracias

_________________
Si la mentira tuviera color, todos seríamos daltónicos...


Arriba
 Perfil  
 
NotaPublicado: 19 Dic 2010 05:25 
Desconectado
Implementador
Implementador

Registrado: 09 Jun 2010 14:50
Mensajes: 1675
Ubicación: Argentina
Ya está solucionado pero bueno, yo opino que de forma predeterminada el parseado debería llevarse acabo ignorando la capitalización para dar lugar a menos errores en el entendimiento de las órdenes del jugador por parte del juego. ¿Acaso en otros sistemas de creación como Inform no se elimina la capitalización en las frases del jugador?


Arriba
 Perfil  
 
NotaPublicado: 19 Dic 2010 08:44 
Desconectado
Samudio
Samudio
Avatar de Usuario

Registrado: 09 Mar 2004 16:16
Mensajes: 5312
Ubicación: Coruña
También hay forma de hacer eso, con una sola línea de código. En el preprocessCommand se hace un toLowerCase() y a partir de ahí ya sirve hacer todas las comparaciones del juego en minúsculas.

_________________
Actúa siempre de tal modo que las decisiones de tu voluntad pudiesen servir como preceptos de una legislación universal (E. Kant)


Arriba
 Perfil  
 
NotaPublicado: 19 Dic 2010 10:30 
Desconectado
xyzzy

Registrado: 09 Mar 2004 22:50
Mensajes: 9150
Al-Khwarizmi escribió:
También hay forma de hacer eso, con una sola línea de código. En el preprocessCommand se hace un toLowerCase() y a partir de ahí ya sirve hacer todas las comparaciones del juego en minúsculas.


Yo te mato... :lol: :lol:
Menos mal que no me dio por hacer ayer un repaso de todos los contains que tengo en el código y adecuarlos a la nueva situación, o crear una función llamada containslow (era la idea). :lol:

En vez de eso terminé la lista de verbos. :mrgreen:

Más de 1380 verbos, habiendo eliminado aquellos que son impersonales, como "llover" y aquellos que son "involuntarios", como "doler".
No he puesto alias, salvo los que ya venían en la lista vieja y que hacían referencia a la acción ir. Yo quitaría también estos, porque he llegado a la conclusión de que alias.lan debería ser un archivo fácilmente editable por el programador y que no llevara por defecto mas que aquellos verbos que solo pueden desembocar en una misma acción, que son más bien pocos. A esa lista el programador podría añadir todos los que él considerase necesarios, bien desde el ide, o bien desde un archivo aparte, al estilo de lo que ocurre ahora mismo con el de mensajes.

Te mandaré ambas listas en cuanto acabe la de alias; y ya que te he evitado currártelas lo único que te pido es que les des un repaso en busca de alguna errata. Aunque están hechas sobre un editor con corrección ortográfica, podría haber errores de otro tipo, no sé.

Saludos
Jenesis

_________________
Si la mentira tuviera color, todos seríamos daltónicos...


Arriba
 Perfil  
 
NotaPublicado: 19 Dic 2010 11:07 
Desconectado
xyzzy

Registrado: 09 Mar 2004 22:50
Mensajes: 9150
jenesis escribió:
Aunque están hechas sobre un editor con corrección ortográfica, podría haber errores de otro tipo, no sé.


Por ejemplo, me he visto obligada a recurrir a la RAE, para comprobar la conjugación de algunos verbos, y aquí dejo uno de los casos.

rae=raer
rayo=raer
raigo=raer

En este caso ambas formas de la primera persona son correctas, en mi caso el asombro ha sido doble porque no sabía ni qué poner ¿rao? De todos modos he dejado solo raigo, porque la otra coincide con la del verbo rayar, algo que pasa también con otros verbos si bien son los menos.

Otra cosa que he hecho ha sido limitar a una línea aquellos verbos reflexivos que solo se pueden usar como tales.
quejate=quejarse
reconciliate=reconciliarse
En el último caso no admito la orden "reconciliar a otros", dado que eso normalmente en una conversacional sonaría similar a "haz que salga agua del grifo". xDD
Pero si no lo ves bien lo dejo como otro verbo cualquiera.

He dejado con un solo tiempo aquellos que no funcionan en primera persona salvo en modo reflexivo.
rebela=rebelar
Ya que el otro modo sería
rebelate=rebelar
Y éste se supone viene dado por el mismo AGE ¿no?

Ya me dirás si tengo que corregir alguno de estos casos.

PD: En el caso de los reflexivos, no tengo claro si basta con poner una forma o las dos ya que se supone que el infinitivo lleva implícitos los dos tiempos reflexivos, el de primera persona y el imperativo.
RE-PD : Al final he completado la mayoría de los verbos reflexivos como si de normales se tratase, de ese modo no hay lugar a la duda. :D

_________________
Si la mentira tuviera color, todos seríamos daltónicos...


Arriba
 Perfil  
 
NotaPublicado: 19 Dic 2010 18:18 
Desconectado
Samudio
Samudio
Avatar de Usuario

Registrado: 09 Mar 2004 16:16
Mensajes: 5312
Ubicación: Coruña
jenesis escribió:
Yo te mato... :lol: :lol:
Menos mal que no me dio por hacer ayer un repaso de todos los contains que tengo en el código y adecuarlos a la nueva situación, o crear una función llamada containslow (era la idea). :lol:

Hum... estoy seguríiiiiiiiiiiisimo de que esto de comparar sin tener en cuenta mayúsculas ya me lo preguntaste una vez antes, y en aquel caso ya te había sugerido lo del preprocessCommand. Por eso esta vez no lo dije, porque daba eso por hecho y pensé que preguntabas si había forma de comparar cadenas sin tener en cuenta mayúsculas, sin necesidad de hacer eso :D

Sobre las decisiones que has tomado acerca de los verbos, estoy de acuerdo. Aunque no creo que nunca nadie vaya a raer nada en una aventura, salvo que se convoque una rayendocomp sobre aventuras en las que se necesite raer algo :D

_________________
Actúa siempre de tal modo que las decisiones de tu voluntad pudiesen servir como preceptos de una legislación universal (E. Kant)


Arriba
 Perfil  
 
NotaPublicado: 19 Dic 2010 18:48 
Desconectado
xyzzy

Registrado: 09 Mar 2004 22:50
Mensajes: 9150
Al-Khwarizmi escribió:
Hum... estoy seguríiiiiiiiiiiisimo de que esto de comparar sin tener en cuenta mayúsculas ya me lo preguntaste una vez antes, y en aquel caso ya te había sugerido lo del preprocessCommand.


No me suena, pero es que lo que más me extraña es que no lo aplicara al momento, porque me hubiera evitado todos aquellos "equalsIgnoreCase" que tanto odiaba. xD
Igual me lo dijiste y no me enteré. :oops:

_________________
Si la mentira tuviera color, todos seríamos daltónicos...


Arriba
 Perfil  
 
Mostrar mensajes previos:  Ordenar por  
Nuevo tema Responder al tema  [ 9 mensajes ] 

Todos los horarios son UTC + 1 hora


¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 4 invitados


No puede abrir nuevos temas en este Foro
No puede responder a temas en este Foro
No puede editar sus mensajes en este Foro
No puede borrar sus mensajes en este Foro

Buscar:
Saltar a:  
Desarrollado por phpBB® Forum Software © phpBB Group
Traducción al español por Huan Manwë para phpBB-Es.COM