[英]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.