Golang : Characters limiter example
Problem:
You want to limit a string to X number of characters. How to do that?
Solution:
Use io.ReadAtLeast()
function to read from the string but limited to the X number of characters.
For example:
package main
import (
"fmt"
"io"
"strings"
)
// Limits a string to X number of characters.
func char_limiter(s string, limit int) string {
reader := strings.NewReader(s)
// create buffer with specified limit of chraracters
buff := make([]byte, limit)
n, _ := io.ReadAtLeast(reader, buff, limit)
if n != 0 {
//fmt.Printf("\n %s ", buff)
return string(buff) + "..."
} else {
// nothing happens, return original string
return s
}
}
func main() {
str := "ReadAtLeast reads from r into buf until it has read at least min bytes. It returns the number of bytes copied and an error if fewer bytes were read. The error is EOF only if no bytes were read. If an EOF happens after reading fewer than min bytes, ReadAtLeast returns ErrUnexpectedEOF. If min is greater than the length of buf, ReadAtLeast returns ErrShortBuffer. On return, n >= min if and only if err == nil."
fmt.Printf("Original : [%s] \n", str)
// limit to 10 characters
fmt.Println("10 characters : ", char_limiter(str, 10))
// limit to 30 characters
fmt.Println("30 characters : ", char_limiter(str, 30))
// limit to 100 characters
fmt.Println("100 characters : ", char_limiter(str, 100))
}
Output:
Original : [ReadAtLeast reads from r into buf until it has read at least min bytes. It returns the number of bytes copied and an error if fewer bytes were read. The error is EOF only if no bytes were read. If an EOF happens after reading fewer than min bytes, ReadAtLeast returns ErrUnexpectedEOF. If min is greater than the length of buf, ReadAtLeast returns ErrShortBuffer. On return, n >= min if and only if err == nil.]
10 characters : ReadAtLeas...
30 characters : ReadAtLeast reads from r into ...
100 characters : ReadAtLeast reads from r into buf until it has read at least min bytes. It returns the number of byt...
See also : Golang : Word limiter example
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
+10.8k Golang : Handle or parse date string with Z suffix(RFC3339) example
+36.9k Golang : How to iterate over a []string(array)
+5.5k Golang : Getting Echo framework StartAutoTLS to work
+6.7k Golang : Detect Pascal, Kebab, Screaming Snake and Camel cases
+5.4k Golang : Fibonacci number generator examples
+3k Javascript : Access JSON data example
+18.3k Golang : Pipe output from one os.Exec(shell command) to another command
+9.9k Golang : Clean formatting/indenting or pretty print JSON result
+13.8k Golang : How to remove certain lines from a file
+18.1k Curl usage examples with Golang
+4.1k Fix yum-complete-transaction error
+7.7k Golang : Identifying Golang HTTP client request