Hola a todos, recientemente estaba haciendo un plugin para Bukkit y me ha surgido una duda (no es necesario conocer Bukkit para contestar a esta cuestión). Verán, actualmente tengo esta función:
Código:
public String variables(Player player, String text) {
Calendar calendar = Calendar.getInstance();
return text.replace("$gamemode", player.getGameMode().name())
.replace("$food", Integer.toString(player.getFoodLevel()))
.replace("$health", Integer.toString(player.getHealth()))
.replace("$exp", Integer.toString(player.getTotalExperience()))
.replace("$world", player.getWorld().getName())
.replace("$hand", Integer.toString(player.getItemInHand().getTypeId()))
.replace("$amount", Integer.toString(player.getItemInHand().getAmount()))
.replace("$mctime", Long.toString(player.getWorld().getTime()))
.replace("$hour", Integer.toString(calendar.get(Calendar.HOUR_OF_DAY)))
.replace("$min", Integer.toString(calendar.get(Calendar.MINUTE)))
.replace("$sec", Integer.toString(calendar.get(Calendar.SECOND)))
.replace("$year", Integer.toString(calendar.get(Calendar.YEAR)))
.replace("$month", Integer.toString(calendar.get(Calendar.MONTH)+1))
.replace("$day", Integer.toString(calendar.get(Calendar.DAY_OF_MONTH)));
}
Con esto lo que hago es reemplazar una string con variables por los valores de esas variables. La string tendría un formato como este "$hand==32". Como ven el en código obtengo el valor de "$hand" usando el parámetro "player".
Lo que necesito ahora es no usar la variable "player" como parámetro de la función, sino que quiero usar el siguiente formato "$hand(player)==32".
Imagino que la solución a esto es mediante el uso de expresiones regulares, pero ahora mismo no se me ocurre la manera más eficiente de hacerlo, así que antes de comerme la cabeza y hacer algo demasiado complejo os pregunto a vosotros de qué manera haríais esto.
Si no me he explicado correctamente decídmelo y entraré más en detalles. Saludos!