【问题标题】:Trim newline in a golang tcp server在 golang tcp 服务器中修剪换行符
【发布时间】:2018-11-08 00:15:56
【问题描述】:

我试图弄清楚如何删除我从 netcat tcp 消息收到的 golang 字符串消息中的新行。我已经使用了string.TrimSpace 函数,但我似乎仍然无法删除换行符。有任何想法吗?我也尝试过使用字符串包中的其他修剪功能,但也无法使用。

可能与错误阅读有关:EOF msg?

>>> go run newline_ex.go
Listening on localhost:8080
Error reading: EOF
received message: sometext|\n
post trim: sometext|\n

# Seperate terminal
>>> echo -n "sometext\n" | nc localhost 8080  
package main

import (
    "bufio"
    "fmt"
    "net"
    "os"
    "strings"
)

const (
    host     = "localhost"
    port     = "8080"
    adress   = host + ":" + port
    connType = "tcp"
)

func handleMsg(message string) (string, error) {
    fmt.Printf("received message: %s\n", message)
    m := strings.TrimSpace(message)
    fmt.Printf("post trim: %s \n", m)

    return "OK", nil
}

func handleRequest(conn net.Conn) {
    msg, err := bufio.NewReader(conn).ReadString('\n')
    if err != nil {
        fmt.Println("Error reading:", err.Error())
    }

    response, err := handleMsg(msg)
    if err != nil {
        fmt.Printf("fail to handle message: %v\n", err)
    }

    fmt.Printf("Sending response: %v\n", response)
    conn.Write([]byte(response + "\n"))
    conn.Close()
}

func main() {
    l, err := net.Listen(connType, adress)
    if err != nil {
        fmt.Printf("Error listening: %v", err)
        os.Exit(1)
    }
    defer l.Close()
    fmt.Println("Listening on " + adress)

    for {
        conn, err := l.Accept()
        if err != nil {
            fmt.Printf("Error accepting: %v\n", err)
            os.Exit(1)
        }

        go handleRequest(conn)
    }
}

【问题讨论】:

    标签: string go tcp


    【解决方案1】:

    strings.Trimspace 修剪前导和尾随空格。使用

    strings.TrimRight("sometext\n", "\n")
    

    【讨论】:

      猜你喜欢
      • 2018-12-17
      • 1970-01-01
      • 1970-01-01
      • 2019-01-29
      • 2016-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多