¿Evaluar la expresión matemática en una cadena? (NSCadena) [duplicate]

1 minuto de lectura

¿Evaluar la expresion matematica en una cadena NSCadena duplicate
Chris Bentley

Posible duplicado:

¿Qué es un analizador matemático rápido C u Objective-C?

Tengo un NSString que representa un cálculo, por ejemplo. @"(10+10)*2" y quiero evaluar la cadena como si en realidad fuera algo como esto;

double result = (10+10)*2;

¿Cuál es el enfoque más directo para tomar en iOS?

  • ¿Te importa llamar a otra aplicación? bc podría manejar eso sin muchos problemas.

    –Carl Norum

    11 de marzo de 2012 a las 0:17

  • Se implementaría en iOS, por lo que probablemente tendría que ser autónomo.

    – Chris Bentley

    11 de marzo de 2012 a las 0:21

  • Usted tiene un [cocoa] etiqueta: probablemente debería volver a etiquetar apropiadamente, entonces.

    –Carl Norum

    11 de marzo de 2012 a las 0:24

  • 1. Tokenizar la entrada usando un lexer. 2. Analice los tokens resultantes, cree un AST. 3. Evalúe el AST recursivamente. 4. ???? 5. ¡Beneficio!

    – Greg Hewgill

    11 de marzo de 2012 a las 0:24


  • has probado a usar doubleValue? ¿está funcionando?

    – HelmiB

    11 de marzo de 2012 a las 0:27

Echa un vistazo a Dave DeLong Marco DDMathParser.

  • Gracias. @itai-ferber ya señaló una pregunta duplicada que sugiere DDMathParser como solución (consulte el hilo de comentarios anterior) … así que ya tengo esto funcionando.

    – Chris Bentley

    11 de marzo de 2012 a las 5:40

Puedes usar GCMathParser.

  • Esto funcionó de fábrica en OS X, pero tengo algunas dificultades para que funcione con iOS 5… Parece que necesita un poco más de ajuste que simplemente reemplazar “#import ” con ” #import ” – Lo revisaré nuevamente después de revisar las otras sugerencias. Gracias.

    – Chris Bentley

    11 de marzo de 2012 a las 2:28

¿Ha sido útil esta solución?

Esta web utiliza cookies propias y de terceros para su correcto funcionamiento y para fines analíticos y para mostrarte publicidad relacionada con sus preferencias en base a un perfil elaborado a partir de tus hábitos de navegación. Al hacer clic en el botón Aceptar, acepta el uso de estas tecnologías y el procesamiento de tus datos para estos propósitos. Configurar y más información
Privacidad