当我动态生成链接时,我想在README.md文件中的注释标签之间插入链接。我写了一个函数来做到这一点,但问题是它也替换了注释标签。我需要修改函数以在注释标签之间插入链接,而不是整体上替换它。

//README.md

### HTTP APIs

<!--HTTP-API-start-->

<!--HTTP-API-end-->

### AMQP APIs

<!--AMQP-API-start-->

<!--AMQP-API-end-->

这是我编写的用于插入链接的函数。一个可能的解决方案是将注释标记与httpAPIAmqpAPI字符串一起添加,但这不是我想要的,因为它替换了文件中的当前标记。

func GenerateGodocLinkInReadme(amqpLinks string, httpLinks string) {

    path := `../../README.md`
    formattedContent, err := ioutil.ReadFile(path)
    if err != nil {
        panic(err)
    }

    httpAPI := "<!--HTTP-API-start-->" +
        amqpLinks +
        "\n" +
        "<!--HTTP-API-end-->"

    AmqpAPI := "<!--AMQP-API-start-->" +
        httpLinks +
        "\n" +
        "<!--AMQP-API-end-->"

    formattedContent = regexp.MustCompile(`<!--AMQP-API-start-->([\s\S]*?)<!--AMQP-API-end-->`).ReplaceAll(formattedContent, []byte(AmqpAPI))
    exitOnFail(ioutil.WriteFile(path, formattedContent, 0644))
    formattedContent = regexp.MustCompile(`<!--HTTP-API-start-->([\s\S]*?)<!--HTTP-API-end-->`).ReplaceAll(formattedContent, []byte(httpAPI))
    exitOnFail(ioutil.WriteFile(path, formattedContent, 0644))
}

此功能正常工作,但它也会替换注释标签。我需要修改此功能,以便它在注释标记之间插入链接。

最佳答案

试试这个。

func GenerateGodocLinkInReadme(amqpLinks string, httpLinks string) {
    path := `README.md`
    formattedContent, err := ioutil.ReadFile(path)
    if err != nil {
        panic(err)
    }
    amqpRegex := regexp.MustCompile(`<!--AMQP-API-start-->([\s\S]*?)<!--AMQP-API-end-->`)
    httpRegex := regexp.MustCompile(`<!--HTTP-API-start-->([\s\S]*?)<!--HTTP-API-end-->`)

    prevAmqpLinks := string(amqpRegex.FindSubmatch((formattedContent))[1]) // Second index of returns links between tags
    prevHttpLinks := string(httpRegex.FindSubmatch((formattedContent))[1]) // Second index of returns links between tags
    httpAPI := prevHttpLinks + httpLinks + "\n"
    AmqpAPI := prevAmqpLinks + amqpLinks + "\n"
    formattedContent = amqpRegex.ReplaceAll(formattedContent, []byte(`<!--AMQP-API-start-->` + AmqpAPI + `<!--AMQP-API-end-->`))
    formattedContent = httpRegex.ReplaceAll(formattedContent, []byte(`<!--HTTP-API-start-->` + httpAPI + `<!--HTTP-API-end-->`))
    exitOnFail(ioutil.WriteFile(path, formattedContent, 0644))
}

关于regex - 在Go中的README.md中的注释标签之间插入链接,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/61263917/

10-09 09:46