如何解析输入字符串,如计算器,以获取运算符和操作数?

时间:2017-11-15 16:28:16

标签: parsing go

我是Go编程语言的新手,我正在尝试构建一个非常简单的计算器。我遇到的问题是,如果有人在命令行中输入4+25/10100-25,我如何从该字符串中获取运算符和操作数以执行等式?

这是我到目前为止所做的,但这只是抓住整个字符串

package main

import (
"bufio"
"fmt"
"os"
"stack" //stack code works perfectly
)

func main() {

// Read a line from stdin.
scanner := bufio.NewScanner(os.Stdin)

for scanner.Scan() {
    line := scanner.Text()
    // fmt.Println(line)

    //Separate the string based on operator and operands

    // Push all of the characters onto the stack.
    s := stack.New()
    for i := 0; i < len(line); i++ {
        if err := s.Push(line[i]); err != nil {
            panic("Push failed")
        }
    }

1 个答案:

答案 0 :(得分:0)

为您提供一些指示。

  1. line尝试strings.FieldsFunc()
  2. 获取操作数
  3. 将您的操作数转换为float64尝试strconv.ParseFloat()fmt.Sscanf()
  4. 弄清楚你有什么操作+, -, /, *。也许是strings.ContainsRune()
  5. 对操作数执行操作并显示结果。
  6. 玩得开心!