簡體   English   中英

如何在golang中將[] string或[] byte類型傳遞給SplitAfterN?

[英]How to pass []string or []byte type to SplitAfterN in golang?

我正在逐行讀取文件,並且希望根據子字符串拆分行。 但是,當我使用SplitAfterN並通過讀取行​​時,我正面臨以下錯誤,

無法將“變量”(類型[] string)轉換為字符串類型

其中'variable'= []字符串類型

package main

import (
    "bufio"
    "flag"
    "fmt"
    "log"
    "os"
    "strings"
)

func main() {
    var fLine []string

    FileName := flag.String("fpath", "Default file path", "File path description ")
    flag.Parse()

    fptr, err := os.Open(*FileName)
    if err != nil {
        log.Fatal(err)
    }

    FileScanner := bufio.NewScanner(fptr)
    for FileScanner.Scan() {
        // Append each line into one buffer while reading
        fLine = append(fLine, FileScanner.Text())
        splitline := strings.SplitAfterN(fLine, "12345", 2)
        fmt.Println("Splited string = ", splitline[1])
    }
}

我期望下面的行拆分傳遞的參數(fLine) splitline:= strings.SplitAfterN(fread,“ 12345”,2)

您讀取的(最后)行不是fLine ,而是所有行的一部分。 最后一行由FileScanner.Text()返回。 如果要分割最后一行,可以將其存儲在變量中,也可以使用切片的最后一個元素。

如果選擇將其存儲在變量中:

line := FileScanner.Text()
fLine = append(fLine, line)
splitline  := strings.SplitAfterN(line, "12345", 2)

如果只想使用最后一個slice元素:

fLine = append(fLine, FileScanner.Text())
splitline  := strings.SplitAfterN(fLine[len(fLine)-1], "12345", 2)

因此,您只想將切片轉換為字符串,對嗎?

這應該做您需要的。

所以:

splitline := strings.SplitAfterN(strings.Join(fLine," "), "12345", 2)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM