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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

從文件中讀取并檢查文件結(jié)尾

從文件中讀取并檢查文件結(jié)尾

Go
PIPIONE 2023-05-15 14:56:34
我正在嘗試在 Go 中執(zhí)行以下任務(wù);從文件中讀取備份文件根據(jù)逐字符輸出的文件覆蓋和執(zhí)行操作(例如,可能包括換行符或“b”)不幸的是,我卡在了第 3 步,希望獲得有關(guān)“換行”字符(即“/n”)的幫助。我嘗試使用filesText, err := ioutil.ReadFile(fileNameAndDirectory)但不幸的是,如果我在轉(zhuǎn)換為字符串后嘗試檢查文件結(jié)尾,filesText我將無法檢測(cè)到換行符(即如果文件文本為“/nhello/n”,則以下代碼片段將不會(huì)打印字符串“匹配”filesText, err := ioutil.ReadFile(fileNameAndDirectory) if (string(filesText)[:2]) == "/n") {    fmt.Println("match")}).我可以做些什么來檢測(cè)新行而無需手動(dòng)逐行讀取文件?例子:如果文件內(nèi)容是“r/n3$/n;” 那么當(dāng)我從左到右移動(dòng)文件內(nèi)容時(shí),我應(yīng)該能夠執(zhí)行 6 個(gè)預(yù)定義的操作(每個(gè)字符一個(gè))。
查看完整描述

1 回答

?
青春有我

TA貢獻(xiàn)1784條經(jīng)驗(yàn) 獲得超8個(gè)贊

我們只能猜測(cè)。你沒有清楚地定義你的問題。請(qǐng)闡明您的具體問題或添加其他詳細(xì)信息以準(zhǔn)確突出您的需求。提供示例輸入和輸出。


Go 編程語言規(guī)范

在反斜杠之后,某些單字符轉(zhuǎn)義表示特殊值:

\n???U+000A?line?feed?or?newline

這是一個(gè)猜測(cè):

lines.go:

package main


import (

? ? "fmt"

? ? "io/ioutil"

? ? "os"

? ? "strings"

)


func lines(data []byte) {

? ? text := string(data)

? ? for i, j := 0, 0; j >= 0; i += j + 1 {

? ? ? ? var line string

? ? ? ? j = strings.IndexByte(text[i:], '\n')

? ? ? ? if j < 0 {

? ? ? ? ? ? line = text[i:]

? ? ? ? ? ? if len(line) == 0 {

? ? ? ? ? ? ? ? continue

? ? ? ? ? ? }

? ? ? ? } else {

? ? ? ? ? ? line = text[i : i+j+1]

? ? ? ? }

? ? ? ? // process line

? ? ? ? fmt.Printf("%d %q\n", len(line), line)

? ? }

}


func main() {

? ? filename := `test.file`

? ? data, err := ioutil.ReadFile(filename)

? ? if err != nil {

? ? ? ? fmt.Fprintln(os.Stderr, err)

? ? ? ? return

? ? }

? ? fmt.Printf("%d %q\n", len(data), data)

? ? lines(data)

}

輸出:


$ cat test.file

line1

line2

line3

$ go run lines.go

18 "line1\nline2\nline3\n"

6 "line1\n"

6 "line2\n"

6 "line3\n"

評(píng)論:


我會(huì)嘗試通過一個(gè)例子來闡明它。假設(shè)我有一個(gè)內(nèi)容為“ara/n;>$g9s”的文件,我的應(yīng)用程序?qū)⒃谖募?nèi)容中移動(dòng)時(shí)執(zhí)行由該輸入字符定義的操作。也就是說,如果“a”執(zhí)行操作 1,“r”執(zhí)行操作 2,“/n”執(zhí)行操作 3 等等,那么上面的輸入將按順序執(zhí)行以下操作 1,2,1,3...。但是,如果將字節(jié)數(shù)組轉(zhuǎn)換為字符串,那么我將無法識(shí)別“/n”字符,因?yàn)楸M管打印出來或?qū)⑵溥B接到文件中時(shí)字符串的格式與以前相同,但它們似乎已被刪除。– 埃利奧特史密斯


你為什么要寫/n一個(gè)換行符!正如我已經(jīng)指出的那樣,換行符 U+000A 寫為\n.


例如,


package main


import "fmt"


func es(s string) {

? ? for _, r := range s {

? ? ? ? switch r {

? ? ? ? case 'a':

? ? ? ? ? ? fmt.Printf("action 1 for %q\n", r)

? ? ? ? case 'r':

? ? ? ? ? ? fmt.Printf("action 2 for %q\n", r)

? ? ? ? case '\n':

? ? ? ? ? ? fmt.Printf("action 3 for %q\n", r)

? ? ? ? default:

? ? ? ? ? ? fmt.Printf("action ? for %q\n", r)

? ? ? ? }

? ? }

}


func main() {

? ? b := []byte("ara\n;>$g9s")

? ? s := string(b)

? ? es(s)

}

游樂場(chǎng):https://play.golang.org/p/3J0pxXh3Wkc


輸出:


action 1 for 'a'

action 2 for 'r'

action 1 for 'a'

action 3 for '\n'

action ? for ';'

action ? for '>'

action ? for '$'

action ? for 'g'

action ? for '9'

action ? for 's'

修改后的問題:


例子:如果文件內(nèi)容是“r/n3$/n;” 那么當(dāng)我從左到右移動(dòng)文件內(nèi)容時(shí),我應(yīng)該能夠執(zhí)行 6 個(gè)預(yù)定義的操作(每個(gè)字符一個(gè))。埃利奧特·史密斯


你為什么要寫/n一個(gè)換行符!正如我已經(jīng)指出的那樣,換行符 U+000A 寫為\n.


例如,


package main


import "fmt"


func es(s string) {

? ? for _, r := range s {

? ? ? ? switch r {

? ? ? ? case 'a':

? ? ? ? ? ? fmt.Printf("action for %q\n", r)

? ? ? ? case 'r':

? ? ? ? ? ? fmt.Printf("action for %q\n", r)

? ? ? ? case '\n':

? ? ? ? ? ? fmt.Printf("action for %q\n", r)

? ? ? ? default:

? ? ? ? ? ? fmt.Printf("action for %q\n", r)

? ? ? ? }

? ? }

}


func main() {

? ? file := []byte("r\n3$\n;")

? ? s := string(file)

? ? es(s)

}

游樂場(chǎng):https://play.golang.org/p/X1gtrPRmlqq


輸出:


action for 'r'

action for '\n'

action for '3'

action for '$'

action for '\n'

action for ';'


查看完整回答
反對(duì) 回復(fù) 2023-05-15
  • 1 回答
  • 0 關(guān)注
  • 150 瀏覽
慕課專欄
更多

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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