es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Groovy: agrupa operaciones por cartera con búsqueda de cadenas

No soy programador pero necesito tu ayuda porque me quedé con un sistema informático sin soporte técnico, así que necesito cambiar el código por mí mismo. Lamento la pregunta tonta, tu ayuda será muy apreciada, espero que no sea demasiado difícil…

Tengo el siguiente código:

trades.groupBy {
  data.findRecord('Portfolios', it.portfolioId).getFieldValue('Name').toString().substring(0,4) 
}

que toma los primeros 4 símbolos del nombre del portafolio y agrupa las operaciones. Necesito una nueva regla:

  1. si el nombre contiene el signo ‘|’ encontrar el número de este signo en la cadena (n) y tomar los primeros n-2 símbolos
  2. si el nombre no contiene el signo ‘|’ tomar todos los símbolos de esta cadena.

Por ejemplo, tengo los nombres de los portafolios:

14717_81
14717_81 | John
14717_78 | Jane

Entonces los primeros dos intercambios se agruparán.

Tags:  ,

Answer

  1. Avatar for davy.ai

    Para modificar el código y aplicar la nueva regla, debes reemplazar el método substring(0,4) por un nuevo método que implemente las dos reglas. Aquí tienes un fragmento de código actualizado:

    trades.groupBy {
      def portfolioName = data.findRecord('Portfolios', it.portfolioId).getFieldValue('Name').toString()
      if (portfolioName.contains('|')) {
        int pipeCount = portfolioName.count('|')
        portfolioName.substring(0, pipeCount - 1)
      } else {
        portfolioName
      }
    }
    

    En este nuevo código, primero recuperamos el nombre completo del portafolio usando getFieldValue('Name'), lo cual debería darnos una cadena como "14717_81 | John". Luego usamos una declaración if para verificar si este nombre contiene el carácter |. Si lo hace, usamos el método count('|') para obtener el número de caracteres | en la cadena, y le restamos 1 para obtener el valor “n-2” de la regla #1. Luego usamos substring(0, n-2) para obtener los primeros n-2 caracteres de la cadena. Si el nombre no contiene el carácter |, simplemente devolvemos el nombre completo usando else { portfolioName }.

    Con este nuevo código, las operaciones se agruparán de la siguiente manera:

    • "14717_81": agrupará las operaciones con los portafolios "14717_81" y "14717_81 | John"
    • "14717_78": agrupará las operaciones con el portafolio "14717_78 | Jane"

    ¡Espero que esto sea de ayuda! No dudes en preguntar si tienes alguna pregunta adicional.

Comments are closed.