dourang6423 2015-01-11 08:34
浏览 46
已采纳

Go中的文本处理-如何将字符串转换为字节?

I'm writing a small pragram to number the paragraph:

  1. put paragraph number in front of each paragraph in the form of [1]..., [2]....
  2. Article title should be excluded.

Here is my program:

package main

import (
    "fmt"
    "io/ioutil"
)

var s_end = [3]string{".", "!", "?"}

func main() {
    b, err := ioutil.ReadFile("i_have_a_dream.txt")
    if err != nil {
        panic(err)
    }

    p_num, s_num := 1, 1

    for _, char := range b {
        fmt.Printf("[%s]", p_num)
        p_num += 1
        if char == byte("
") {
            fmt.Printf("
[%s]", p_num)
            p_num += 1
        } else {
            fmt.Printf(char)
        }
    }
}

http://play.golang.org/p/f4S3vQbglY

I got this error:

prog.go:21: cannot convert "
" to type byte
prog.go:21: cannot convert "
" (type string) to type byte
prog.go:21: invalid operation: char == "
" (mismatched types byte and string)
prog.go:25: cannot use char (type byte) as type string in argument to fmt.Printf
[process exited with non-zero status]

How to convert string to byte?

What is the general practice to process text? Read in, parse it by byte, or by line?

Update

I solved the problem by converting the buffer byte to string, replacing strings by regular expression. (Thanks to @Tomasz Kłak for the regexp help)

I put the code here for reference.

package main

import (
    "fmt"
    "io/ioutil"
    "regexp"
)


func main() {
    b, err := ioutil.ReadFile("i_have_a_dream.txt")
    if err != nil {
        panic(err)
    }

    s := string(b)
    r := regexp.MustCompile("(
)+")
    counter := 1

    repl := func(match string) string {
        p_num := counter
        counter++
        return fmt.Sprintf("%s [%d] ", match, p_num)
    }

    fmt.Println(r.ReplaceAllStringFunc(s, repl))
}
  • 写回答

2条回答 默认 最新

  • dongzhenju3015 2015-01-11 08:40
    关注

    Using " " causes it to be treated as an array, use ' ' to treat it as a single char.

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥100 set_link_state
  • ¥15 虚幻5 UE美术毛发渲染
  • ¥15 CVRP 图论 物流运输优化
  • ¥15 Tableau online 嵌入ppt失败
  • ¥100 支付宝网页转账系统不识别账号
  • ¥15 基于单片机的靶位控制系统
  • ¥15 真我手机蓝牙传输进度消息被关闭了,怎么打开?(关键词-消息通知)
  • ¥15 装 pytorch 的时候出了好多问题,遇到这种情况怎么处理?
  • ¥20 IOS游览器某宝手机网页版自动立即购买JavaScript脚本
  • ¥15 手机接入宽带网线,如何释放宽带全部速度