How to convert lines in a multiline string starting with some "#" to start and end with "_" in Go

1 Answer

0 votes
package main

import (
        "fmt"
        "regexp"
)

func main() {
        str := "###Word1 Word2\nWord3\nWord4 Word5 Word6\n##Word7\n#Word8 Word9\n"

        // Define the regex pattern
        regex := `#+(.*)`

        // Compile the pattern
        pattern := regexp.MustCompile(regex)

        // Replace matches with the desired format
        str = pattern.ReplaceAllStringFunc(str, func(s string) string {
                return "_" + s[regexp.MustCompile(`#+`).FindStringIndex(s)[1]:] + "_"
        })

        fmt.Println(str)
}



/*
run:

_Word1 Word2_
Word3
Word4 Word5 Word6
_Word7_
_Word8 Word9_

*/

 



answered Mar 27, 2025 by avibootz
...