普通网友 2018-05-31 21:41
浏览 35

使用换行符分隔符解析字符串,然后分配给变量

I am trying to parse serial input into sentences, then assign those sentences to a variable. Here is an example of what I am trying to do. My serial port currently outputs this:

This is the first sentence. 
This is the second sentence. 
This is the third sentence. 

I read this in and print it by using:

scanner := bufio.NewScanner(port)
    for scanner.Scan() {
        fmt.Println(scanner.Text())
        }

What I would like to do is I want to assign each sentence to a new variable. I want to later do something like this (example):

fmt.Printf("First sentence: %q
", firstSen)
fmt.Printf("Second sentence: %q
", secondSen)
fmt.Printf("Third sentence: %q
", thirdSen)

And it should output:

First sentence: This is the first sentence. 
Second sentence: This is the second sentence. 
Third sentence: This is the third sentence.

How can do I go about doing this? Thank you.

  • 写回答

1条回答 默认 最新

  • douxiuyi6529 2018-05-31 22:22
    关注

    Collect the lines from the input:

    var lines []string
    scanner := bufio.NewScanner(port)
    for scanner.Scan() {
        lines = append(lines, scanner.Text())
    }
    if err := scanner.Err(); err != nil {
        // handle error
    }
    

    Loop through variables assigning a line to the variable:

    var firstSen, secondSen, thirdSen string
    for i, s := range []*string{&firstSen, &secondSen, &thirdSen} {
        if i >= len(lines) {
            break
        }
        *s = lines[i]
    }
    

    Print as shown in the question:

    fmt.Printf("First sentence: %q
    ", firstSen)
    fmt.Printf("Second sentence: %q
    ", secondSen)
    fmt.Printf("Third sentence: %q
    ", thirdSen)
    

    Depending on your requirements, you can drop the variables and use the slice of lines directly:

    fmt.Printf("First sentence: %q
    ", line[0])
    fmt.Printf("Second sentence: %q
    ", line[1])
    fmt.Printf("Third sentence: %q
    ", line[2])
    
    评论

报告相同问题?

悬赏问题

  • ¥20 测距传感器数据手册i2c
  • ¥15 RPA正常跑,cmd输入cookies跑不出来
  • ¥15 求帮我调试一下freefem代码
  • ¥15 matlab代码解决,怎么运行
  • ¥15 R语言Rstudio突然无法启动
  • ¥15 关于#matlab#的问题:提取2个图像的变量作为另外一个图像像元的移动量,计算新的位置创建新的图像并提取第二个图像的变量到新的图像
  • ¥15 改算法,照着压缩包里边,参考其他代码封装的格式 写到main函数里
  • ¥15 用windows做服务的同志有吗
  • ¥60 求一个简单的网页(标签-安全|关键词-上传)
  • ¥35 lstm时间序列共享单车预测,loss值优化,参数优化算法