Package tabwriter

import "text/tabwriter"
Overview
Index
Examples

Overview ▾

包tabwriter实现了写过滤器(tabwriter.Writer),该过滤器将输入中的选项卡式列转换为正确对齐的文本.

该程序包使用http://nickgravgaard.com/elastictabstops/index.html中描述的Elastic Tabstops算法.

文本/制表程序包被冻结,并且不接受新功能.

示例(弹性)

....a|..b|c
...aa|.bb|cc
..aaa|
.aaaa|.dddd|eeee

示例(TrailingTab)

------a|------b|---aligned|
-----aa|-----bb|---aligned|
----aaa|----bbb|unaligned
---aaaa|---bbbb|---aligned|

Constants

可以使用这些标志控制格式.

const (
    // Ignore html tags and treat entities (starting with '&'
    // and ending in ';') as single characters (width = 1).
    FilterHTML uint = 1 << iota

    // Strip Escape characters bracketing escaped text segments
    // instead of passing them through unchanged with the text.
    StripEscape

    // Force right-alignment of cell content.
    // Default is left-alignment.
    AlignRight

    // Handle empty columns as if they were not present in
    // the input in the first place.
    DiscardEmptyColumns

    // Always use tabs for indentation columns (i.e., padding of
    // leading empty cells on the left) independent of padchar.
    TabIndent

    // Print a vertical bar ('|') between columns (after formatting).
    // Discarded columns appear as zero-width columns ("||").
    Debug
)

要转义文本段,请用转义字符将其括起来. 例如,此字符串中的选项卡"忽略此选项卡:\ xff \ t \ xff"不会终止单元格,而是构成一个宽度为1的单个字符以进行格式化.

选择值0xff是因为它不能出现在有效的UTF-8序列中.

const Escape = '\xff'

type Writer

Writer是一种过滤器,它在输入中以制表符分隔的列周围插入填充以使它们在输出中对齐.

Writer将传入的字节视为UTF-8编码的文本,由水平('\ t')或垂直('\ v')制表符以及换行符('\ n')或换页符('\ f')终止的单元格组成字符 换行符和换页符都充当换行符.

连续行中的制表符终止的单元格构成一列. 编写器根据需要插入填充以使列中的所有单元格具有相同的宽度,从而有效地对齐列. 它假定所有字符具有相同的宽度,但必须为其指定制表符宽度的制表符除外. 列单元格必须以制表符结尾,而不用制表符分隔:行末尾的非制表符结尾的尾随文本构成一个单元格,但该单元格不是对齐列的一部分. 例如,在此示例中(其中|代表水平制表符):

aaaa|bbb|d
aa  |b  |dd
a   |
aa  |cccc|eee

b和c位于不同的列中(b列并非一直是连续的). d和e根本不在列中(没有终止选项卡,列也不是连续的).

编写器假定所有Unicode代码点都具有相同的宽度. 在某些字体中或字符串包含组合字符时,可能不正确.

如果设置了DiscardEmptyColumns,则将丢弃完全由垂直(或"软")选项卡终止的空列. 由水平(或"硬")选项卡终止的列不受此标志的影响.

If a Writer is configured to filter HTML, HTML tags and entities are passed through. The widths of tags and entities are assumed to be zero (tags) and one (entities) for formatting purposes.

一段文本可以通过用转义字符括起来进行转义. 制表人员将转义的文本段通过原样传递. 特别是,它不会解释段中的任何制表符或换行符. 如果设置StripEscape标志,则从输出中删除转义字符;否则,将转义. 否则,它们也会通过. 为了格式化,总是计算转义文本的宽度,不包括转义字符.

换页符的作用类似于换行符,但它也会终止当前行中的所有列(有效地调用Flush). 下一行中以制表符结尾的单元格将开始新列. 除非在HTML标记内或转义的文本段内找到,否则换页符在输出中显示为换行符.

编写器必须在内部缓冲输入,因为一行的适当间距可能取决于将来行中的单元格. 调用完写后,客户端必须调用Flush.

type Writer struct {
    // contains filtered or unexported fields
}

func NewWriter

func NewWriter(output io.Writer, minwidth, tabwidth, padding int, padchar byte, flags uint) *Writer

NewWriter分配并初始化一个新的tabwriter.Writer. 参数与Init函数的参数相同.

func (*Writer) Flush

func (b *Writer) Flush() error

在最后一次调用Write之后,应调用Flush,以确保Writer中缓冲的所有数据均被写入输出. 最后任何不完整的转义序列出于格式化目的均被视为完整.

func (*Writer) Init

func (b *Writer) Init(output io.Writer, minwidth, tabwidth, padding int, padchar byte, flags uint) *Writer

必须通过调用Init来初始化Writer. 第一个参数(输出)指定过滤器输出. 其余参数控制格式:

minwidth	minimal cell width including any padding
tabwidth	width of tab characters (equivalent number of spaces)
padding		padding added to a cell before computing its width
padchar		ASCII char used for padding
		if padchar == '\t', the Writer will assume that the
		width of a '\t' in the formatted output is tabwidth,
		and cells are left-aligned independent of align_left
		(for correct-looking results, tabwidth must correspond
		to the tab width in the viewer displaying the result)
flags		formatting control

Example

a	b	c	d		.
123	12345	1234567	123456789	.

    a     b       c         d.
  123 12345 1234567 123456789.

func (*Writer) Write

func (b *Writer) Write(buf []byte) (n int, err error)

写入将buf写入写入器b. 返回的唯一错误是在写入基础输出流时遇到的错误.

by  ICOPY.SITE