go基础库之缩进文本文档

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

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

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

缩进文本文档

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基础库之缩进文本文档》,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对 码农网 的支持!

查看所有标签

猜你喜欢:

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

Java Web高级编程

Java Web高级编程

威廉斯 (Nicholas S.Williams) / 王肖锋 / 清华大学出版社 / 2015-6-1 / CNY 99.80

Java成为世界上编程语言之一是有其优势的。熟悉JavaSE的程序员可以轻松地进入到Java EE开发中,构建出安全、可靠和具有扩展性的企业级应用程序。编写《Java Web高级编程——涵盖WebSockets、Spring Framework、JPA Hibernate和 Spring Security》一书的目的正是如此。 《Java Web高级编程:涵盖WebSockets、Sp......一起来看看 《Java Web高级编程》 这本书的介绍吧!

HTML 编码/解码
HTML 编码/解码

HTML 编码/解码

URL 编码/解码
URL 编码/解码

URL 编码/解码

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换