内容简介:字符串输入可能包含太多的空格,太少的空格或不适合的空格字符。此篇包含有关如何管理这些内容并根据需要格式化字符串的提示。
字符串输入可能包含太多的空格,太少的空格或不适合的空格字符。此篇包含有关如何管理这些内容并根据需要格式化字符串的提示。
管理字符串中的空格
Golang 版本
1.12.1
前言
字符串输入可能包含太多的空格,太少的空格或不适合的空格字符。此篇包含有关如何管理这些内容并根据需要格式化字符串的提示。
实现
创建文件 whitespace.go
,代码如下:
package main import ( "fmt" "math" "regexp" "strconv" "strings" ) func main() { stringToTrim := "\t\t\n Go \tis\t Awesome \t\t" trimResult := strings.TrimSpace(stringToTrim) fmt.Println(trimResult) stringWithSpaces := "\t\t\n Go \tis\n Awesome \t\t" r := regexp.MustCompile("\\s+") replace := r.ReplaceAllString(stringWithSpaces, " ") fmt.Println(replace) needSpace := "need space" fmt.Println(pad(needSpace, 14, "CENTER")) fmt.Println(pad(needSpace, 14, "LEFT")) } func pad(input string, padLen int, align string) string { inputLen := len(input) if inputLen >= padLen { return input } repeat := padLen - inputLen var output string switch align { case "RIGHT": output = fmt.Sprintf("% "+strconv.Itoa(-padLen)+"s", input) case "LEFT": output = fmt.Sprintf("% "+strconv.Itoa(padLen)+"s", input) case "CENTER": bothRepeat := float64(repeat) / float64(2) left := int(math.Floor(bothRepeat)) + inputLen right := int(math.Ceil(bothRepeat)) output = fmt.Sprintf("% "+strconv.Itoa(left)+"s%"+strconv.Itoa(right)+"s", input, "") } return output }
$ go run whitespace.go Go is Awesome Go is Awesome need space need space
原理
在代码处理字符串之前对其进行修剪是非常常见的实践,正如前面的代码所演示的,这很容易由标准的 Go 库完成。 strings
库还提供了 TrimXXX
函数的更多变体,它还允许从字符串中修剪其他字符。
要修剪前边和结尾的空白,可以使用 strings
包的 TrimSpace
函数。这代表了代码的以下部分,这也包括在前面的例子中:
stringToTrim := "\t\t\n Go \tis\t Awesome \t\t" stringToTrim = strings.TrimSpace(stringToTrim)
regex
包适合替换多个空格和制表符,并且可以用这种方式为进一步处理字符串做好准备。注意,使用此方法,中断行被替换为单个空格。
这部分代码表示使用正则表达式将所有多个空格替换为一个空格:
r := regexp.MustCompile("\\s+") replace := r.ReplaceAllString(stringToTrim, " ")
填充不是 string
包的显式函数,但是可以通过 fmt
包的 Sprintf
函数来实现。代码中的 pad
函数使用格式化模式 % <+/-padding>s
和一些简单的数学运算来查找填充。最后,填充数字前的负号作为右pad,而正数作为左pad。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
猜你喜欢:- 递归 – 在功能上按空格分割字符串,按引号分组!
- C++ 中的替换空格
- Elasticsearch的wildcard空格问题
- xml中的空格之完全解说
- ios – 用Objective-C替换空格
- objective-c – 按空格数分割NSString
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
JavaScript DOM高级程序设计
Jeffrey Sambells、Aaron Gustafson / 李松峰、李雅雯 / 人民邮电出版社 / 2008-7 / 59.00元
本书注重理论与实践的结合,全面讲述高级的DOM 脚本编程。全书分为3 个部分:第一部分“深入理解DOM 脚本编程”,涉及W3C DOM 规范的各方面,包括非标准的浏览器支持和不支持的内容;第二部分“浏览器外部通信”,以Ajax 和客户端—服务器端通信为主题;第三部分“部分高级脚本编程资源”,集中介绍了一批第三方脚本编程资源,包括库和API。同时,每部分的最后一章都为案例研究,将学到的内容应用于实践......一起来看看 《JavaScript DOM高级程序设计》 这本书的介绍吧!