Golang : Convert spaces to tabs and back to spaces example
A simple example on how to convert spaces to tabs and convert back the tabs to spaces again in a given text string. Useful in a situation where you want to pre-parse a raw data file first before feeding to another parser for further processing.
Here you go!
package main
import (
"fmt"
"strings"
"unicode"
)
func TabToSpace(input string) string {
var result []string
for _, i := range input {
switch {
// all these considered as space, including tab \t
// '\t', '\n', '\v', '\f', '\r',' ', 0x85, 0xA0
case unicode.IsSpace(i):
result = append(result, " ") // replace tab with space
case !unicode.IsSpace(i):
result = append(result, string(i))
}
}
return strings.Join(result, "")
}
func spaceToTab(input string) string {
var result []string
for _, i := range input {
switch {
case unicode.IsSpace(i):
result = append(result, "\t")
case !unicode.IsSpace(i):
result = append(result, string(i))
}
}
return strings.Join(result, "")
}
func main() {
// text := "This is a line with a lot of spaces in between"
text := "жѳМѭњЂЯёЧВ 一二三 handle alphabets = ขอพฮศโำฐเฦ abc世界你好123 ペツワケザユプルヂザ"
fmt.Println("Before: ", text)
output := spaceToTab(text)
fmt.Println("After: ", output)
fmt.Println("Back:", TabToSpace(output))
}
Output:
Before: жѳМѭњЂЯёЧВ 一二三 handle alphabets = ขอพฮศโำฐเฦ abc世界你好123 ペツワケザユプルヂザ
After: жѳМѭњЂЯёЧВ 一二三 handle alphabets = ขอพฮศโำฐเฦ abc世界你好123 ペツワケザユプルヂザ
Back: жѳМѭњЂЯёЧВ 一二三 handle alphabets = ขอพฮศโำฐเฦ abc世界你好123 ペツワケザユプルヂザ
References:
https://golang.org/src/unicode/graphic.go?s=3997:4022#L116
https://www.socketloop.com/tutorials/golang-read-tab-delimited-file-with-encoding-csv-package
See also : Golang : Read tab delimited file with encoding/csv package
By Adam Ng
IF you gain some knowledge or the information here solved your programming problem. Please consider donating to the less fortunate or some charities that you like. Apart from donation, planting trees, volunteering or reducing your carbon footprint will be great too.
Advertisement
Tutorials
+5.2k Mac OSX : Find large files by size
+3.3k MariaDB/MySQL : Form select statement or search query with Chinese characters
+7k Golang : GMail API create and send draft with simple upload attachment example
+6.8k Golang : Generate random Chinese, Japanese, Korean and other runes
+5.8k Golang : How to execute code at certain day, hour and minute?
+4.3k Golang : List all packages and search for certain package
+30k Golang : How to stream file to client(browser) or write to http.ResponseWriter?
+10.3k Golang : Convert(cast) uintptr to string example
+13.6k Golang : How to run your code only once with sync.Once object
+8.3k Golang : How to delete element(data) from map ?
+6.4k Golang : Ackermann function example
+29.3k Golang : Create x509 certificate, private and public keys