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.

Condición de cadena a bool.

Estoy ocupado tratando de crear una declaración if en el front end a partir del valor de cadena del back end.

La imagen de arriba es del back end y he reemplazado el $blody1$ con…

Entonces, al final será algo como esto [Guest].length > 1.

Hay alguna forma de convertirlo en verdadero o falso, si no hay alguna pista para ayudar. Quería mover la lógica al back end pero creo que tendré el mismo problema allí también.

Nota al margen, el resultado final debería ser como {“color”: “azul”} O {“color”: “naranja”}.

MI CÓDIGO

const start = "$";
const end = "$";

final startIndex = str.indexOf(start);
final endIndex = str.indexOf(end, startIndex + start.length);

String tValue =
    str.substring(startIndex + start.length, endIndex);
String tcondition = str.substring(endIndex + 1);
print(getValue(tValue).toString() + tcondition);

Gracias

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Parece que estás tratando de analizar un valor de cadena desde el backend y crear una declaración if en el frontend basada en el valor analizado.

    Para convertir el valor de cadena a una condición verdadero/falso, deberás realizar la operación lógica en función del valor analizado. En tu caso, el valor analizado es [Guest].length > 1, lo que significa que si hay más de un invitado, la condición será verdadera.

    Para lograr esto, puedes usar la función eval en Dart para evaluar la condición y devolver un valor verdadero/falso. Aquí te mostramos un ejemplo de fragmento de código:

    String condition = "[Guest].length > 1";
    bool result = eval(condition);
    print(result);
    
    bool eval(String condition) {
      String value = getValue(condition); //extrae el valor dentro de los símbolos "$"
      String expr = condition.replaceAll(value, getValue(value)); //reemplaza el valor dentro de la expresión original
      return Function.apply(Function(['Guest'], expr), [['Guest']]);
    }
    

    Este código utiliza la función getValue que has definido en tu fragmento de código para extraer el valor dentro de los símbolos “$”. Luego, reemplaza el valor dentro de la condición original y evalúa la expresión utilizando el método Function.apply.

    Esto debería devolver un valor verdadero/falso en función de la condición, que luego puedes usar para crear tu declaración if en el frontend.

    Sin embargo, vale la pena señalar que el uso de la función eval puede ser riesgoso, ya que puede ejecutar cualquier código que se le pase. Es importante sanitizar la entrada y solo usarla si confías en la fuente.

    Alternativamente, puedes considerar cambiar el backend para que devuelva un valor verdadero/falso en lugar de una expresión de cadena, lo que sería más seguro y eficiente.

Comments are closed.