go基础库之缩进文本文档

栏目: Go · 发布时间: 7年前

内容简介:本文将指导你完成文本文档的缩进和取消注释 。

本文将指导你完成文本文档的缩进和取消注释 。

缩进文本文档

Golang 版本

1.12.1

前言

本文将指导你完成文本文档的缩进和取消注释 。

实现

package main

import (
	"fmt"
	"strconv"
	"strings"
	"unicode"
)

func main() {

	text := "Hi! Go is awesome."
	text = Indent(text, 6)
	fmt.Println(text)

	text = Unindent(text, 3)
	fmt.Println(text)

	text = Unindent(text, 10)
	fmt.Println(text)

	text = IndentByRune(text, 10, '.')
	fmt.Println(text)

}

// 通过给定的缩进和rune缩进缩进输入
func IndentByRune(input string, indent int, r rune) string {
	return strings.Repeat(string(r), indent) + input
}

// 通过给定缩进缩进缩进输入
func Indent(input string, indent int) string {
	padding := indent + len(input)
	return fmt.Sprintf("% "+strconv.Itoa(padding)+"s", input)
}

// Unindent unindenting输入字符串。如果输入缩进小于“缩进”空格,则删除两者的最小值。
func Unindent(input string, indent int) string {

	count := 0
	for _, val := range input {
		if unicode.IsSpace(val) {
			count++
		}
		if count == indent || !unicode.IsSpace(val) {
			break
		}
	}

	return input[count:]
}
$  go run main.go
      Hi! Go is awesome.
   Hi! Go is awesome.
Hi! Go is awesome.
..........Hi! Go is awesome.

原理

缩进和填充一样简单。在本例中,使用了相同的格式化选项。缩进实现的更具可读性的形式可以使用 strings 包的 Repeat 函数。前面代码中的 IndentByRune 函数应用了这种方法。

在本例中,取消缩进意味着删除给定的前导空格数。前面代码中的 Unindent 实现删除了最小的前导空格数或给定的缩进。


以上所述就是小编给大家介绍的《go基础库之缩进文本文档》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

技术的本质

技术的本质

布莱恩•阿瑟(Brian Arthur) / 曹东溟、王健 / 浙江人民出版社 / 2014-4-1 / 62.90

★《技术的本质》是复杂性科学奠基人、首屈一指的技术思想家、“熊彼特奖”得主布莱恩•阿瑟所创建的一套关于技术产生和进化的系统性理论,本书是打开“技术黑箱”的钥匙,它用平实的语言将技术最本质的思想娓娓道来。 ★技术,是一个异常美丽的主题,它不动声色地创造了我们的财富,成就了经济的繁荣,改变了我们存在的方式。尽管技术如此重要,却少有人在快节奏的生活中停下来深入思考技术。我们了解技术的原理,却不知道......一起来看看 《技术的本质》 这本书的介绍吧!

MD5 加密
MD5 加密

MD5 加密工具

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

RGB HSV 转换
RGB HSV 转换

RGB HSV 互转工具