我正在编写一个代码,该代码可以扫描测试文件并将文本替换为其他内容。想要用堆叠在另一个下方的不同文本替换同一行。我发现一个选择是使用ioreader的tee功能,但是有更好的方法来实现这一点。
例如,我要实现的目标是用不同的字符串,例如ToString
,Console.WriteLine(String.Format(" {0:F20}", newValue));
等替换下面文本中的newValue
子字符串。
要获得如下输出:
文本:
methodtype
输出:
GET
答案 0 :(得分:0)
要替换文本,可以使用文本/模板代替bufio:
游乐场:https://play.golang.org/p/7HYBqxtJ3KB
package main
import (
"fmt"
"text/template"
"os"
)
type method struct {
MethodType string
}
func main() {
buf := `router.Methods("{{.MethodType}}").Path(templatepackagespec.MethodtypePath).Handler(kitHttp.NewServer(endpoints.FuncnameEndpoint
httptransport.EncodeResponse, append(options, kitHttp.ServerBefore())...
`
tmpl, err := template.New("test").Parse(buf)
if err != nil {
panic(err)
}
methods := []string{"GET", "PUT", "POST"}
for _, m := range methods {
err = tmpl.Execute(os.Stdout, method{MethodType: m})
if err != nil {
fmt.Println(err.Error())
}
}
}
输出:
router.Methods("GET").Path(templatepackagespec.MethodtypePath).Handler(kitHttp.NewServer(endpoints.FuncnameEndpoint
httptransport.EncodeResponse, append(options, kitHttp.ServerBefore())...
router.Methods("PUT").Path(templatepackagespec.MethodtypePath).Handler(kitHttp.NewServer(endpoints.FuncnameEndpoint
httptransport.EncodeResponse, append(options, kitHttp.ServerBefore())...
router.Methods("POST").Path(templatepackagespec.MethodtypePath).Handler(kitHttp.NewServer(endpoints.FuncnameEndpoint
httptransport.EncodeResponse, append(options, kitHttp.ServerBefore())...