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

Parsing 如何解析输入字符串(如计算器)以获取运算符和操作数?,parsing,go,Parsing,Go,我是Go编程语言的新手,我正在尝试构建一个非常简单的计算器。我遇到的问题是,如果有人在命令行中输入4+2或5/10或100-25,如何从该字符串中提取运算符和操作数以执行该等式 到目前为止,这就是我所知道的,但这只是抓住了整个字符串 package main import ( "bufio" "fmt" "os" "stack" //stack code works perfectly ) func main() { // Read a line from stdin. scanner :

我是Go编程语言的新手,我正在尝试构建一个非常简单的计算器。我遇到的问题是,如果有人在命令行中输入
4+2
5/10
100-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")
        }
    }
主程序包
进口(
“布菲奥”
“fmt”
“操作系统”
“stack”//stack代码工作正常
)
func main(){
//从stdin读一行。
扫描仪:=bufio.NewScanner(os.Stdin)
对于scanner.Scan(){
行:=scanner.Text()
//fmt.Println(行)
//根据运算符和操作数分隔字符串
//将所有字符推送到堆栈上。
s:=stack.New()
对于i:=0;i
给你一些建议

  • 要从
    行中获取操作数,请尝试
    strings.FieldsFunc()
  • 将操作数转换为
    float64
    尝试
    strconv.ParseFloat()
    fmt.Sscanf()
  • 找出您有什么操作
    +,-,/,*
    。可能使用
    字符串。ContainsRune()
  • 对操作数执行运算并显示结果
  • 玩得开心

  • 请提供尽可能多的可编译代码。使用以确保一切正常。您是否尝试过实际解析所获取的字符串?目前,这个问题基本上要求完整的实现。这可能会对您有所帮助:。这不是一个实现,但它具有逻辑。