@DKENdhdhdasd

Как добавить к концу строки \r?

мне нужно, чтобы к концу каждой строки добавлялось \r в этой либе https://github.com/olekukonko/tablewriter,
Как это можно сделать? пытался через SetSeperator'ы, но не подходит.
  • Вопрос задан
  • 81 просмотр
Пригласить эксперта
Ответы на вопрос 2
Kuzm1ch88
@Kuzm1ch88
table.SetTablePadding("\r")
Ответ написан
Так как либа для записи требует интерфейс io.Writer, вы легко можете создать свой прокси-райтер, который будет при встрече каждого \n добавлять еще и \r

В самой примитивной реализации это будет выглядеть так:
package main

import (
	"bytes"
	"io"
	"os"

	"github.com/olekukonko/tablewriter"
)

func main() {
	data := [][]string{
		{"1/1/2014", "Domain name", "2233", "$10.98"},
		{"1/1/2014", "January Hosting", "2233", "$54.95"},
		{"1/4/2014", "February Hosting", "2233", "$51.00"},
		{"1/4/2014", "February Extra Bandwidth", "2233", "$30.00"},
	}

	w := New(os.Stdout)

	table := tablewriter.NewWriter(w)
	table.SetHeader([]string{"Date", "Description", "CV2", "Amount"})
	table.SetFooter([]string{"", "", "Total", "$146.93"}) // Add Footer
	table.SetBorder(false)                                // Set Border to false
	table.AppendBulk(data)                                // Add Bulk Data
	table.Render()
}

type ClrfAdder struct {
	writer io.Writer
}

func New(w io.Writer) *ClrfAdder {
	return &ClrfAdder{
		writer: w,
	}
}

func (c ClrfAdder) Write(p []byte) (n int, err error) {
	replaced := bytes.ReplaceAll(p, []byte("\n"), []byte("\r\n"))
	n, err = c.writer.Write(replaced)
	if err != nil {
		if n > len(p) {
			n = len(p)
		}
		return n, err
	}
	return len(p), nil
}


Но можно использовать готовые стрим-реплейсеры, например https://github.com/icholy/replace
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы