第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Golang:在文件中查找字符串并顯示行號

Golang:在文件中查找字符串并顯示行號

Go
小唯快跑啊 2022-01-10 16:41:24
read, err := ioutil.ReadFile(path)if err != nil {    return err}if strings.Contains(string(read), "STRING") {    // display line number?    // what if many occurrences of the string    // how to display for each the line number?}我正在嘗試在文件中搜索特定字符串并顯示該字符串所在的行號。
查看完整描述

3 回答

?
慕慕森

TA貢獻(xiàn)1856條經(jīng)驗(yàn) 獲得超17個贊

使用掃描儀逐行迭代文件,增加每個循環(huán)的行數(shù)。


例如


f, err := os.Open(path)

if err != nil {

    return 0, err

}

defer f.Close()


// Splits on newlines by default.

scanner := bufio.NewScanner(f)


line := 1

// https://golang.org/pkg/bufio/#Scanner.Scan

for scanner.Scan() {

    if strings.Contains(scanner.Text(), "yourstring") {

        return line, nil

    }


    line++

}


if err := scanner.Err(); err != nil {

    // Handle the error

}

更新:如果您需要跨“數(shù)千個文件”執(zhí)行此操作(根據(jù)另一個答案的評論),那么您可以將此方法包裝在工作池中并同時運(yùn)行。


查看完整回答
反對 回復(fù) 2022-01-10
?
森林海

TA貢獻(xiàn)2011條經(jīng)驗(yàn) 獲得超2個贊

嗨試試這個。


    /* ioutil.ReadFile returns []byte, error */

    data, err := ioutil.ReadFile("output.txt")

    /* ... omitted error check..and please add ... */

    /* find index of newline */

    file := string(data)

    line := 0

    /* func Split(s, sep string) []string */

    temp := strings.Split(file, "\n")


    for _, item := range temp {

        fmt.Println("[",line,"]\t",item)

        line++

    }

基本上,它將使用 ioutil 包讀取文件并從內(nèi)容中找出換行符。當(dāng)您找到某個字符或換行符等時,字符串包非常有用。查看 GO 的官方網(wǎng)頁以獲取更多說明和示例。(https://golang.org/pkg/strings/#Split)。


我從上面的(https://golang.org/pkg/strings/#Split)制作了一個“output.txt” ,預(yù)期的輸出應(yīng)該是


[ 0 ]    

[ 1 ]    Examples

[ 2 ]    

[ 3 ]        Contains

[ 4 ]        ContainsAny

[ 5 ]        Count

[ 6 ]        EqualFold

[ 7 ]        Fields

[ 8 ]        FieldsFunc

[ 9 ]        HasPrefix

[ 10 ]       HasSuffix

...

關(guān)于格式,您可以 fmt.Println("[",line,"]\t",item)使用 fmt.Printf(


查看完整回答
反對 回復(fù) 2022-01-10
?
楊__羊羊

TA貢獻(xiàn)1943條經(jīng)驗(yàn) 獲得超7個贊

首先將文件分成幾行(可以使用strings.Splitor完成bytes.Split),然后遍歷各行并單獨(dú)檢查每一行是否包含所需的字符串。如果是,則打印行號。


查看完整回答
反對 回復(fù) 2022-01-10
  • 3 回答
  • 0 關(guān)注
  • 403 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號