I\'m trying to read an entire line from the console (including whitespace), then process it. Using bufio.ReadString, the newline character is read together with the input, s
This is the simple one to perform substring in Go
package main
import "fmt"
var p = fmt.Println
func main() {
value := "address;bar"
// Take substring from index 2 to length of string
substring := value[2:len(value)]
p(substring)
}
To avoid a panic on a zero length input, wrap the truncate operation in an if
input, _ := src.ReadString('\n')
var inputFmt string
if len(input) > 0 {
inputFmt = input[:len(input)-1]
}
// Do something with inputFmt
To get substring
find position of "sp"
cut string with array-logical
https://play.golang.org/p/0Redd_qiZM
It looks like you're confused by the working of slices and the string storage format, which is different from what you have in C.
len
operation : there is no need to count1
after slicing by adding an empty string.To remove the last char (if it's a one byte char), simply do
inputFmt:=input[:len(input)-1]
WARNING: operating on strings alone will only work with ASCII and will count wrong when input is a non-ASCII UTF-8 encoded character, and will probably even corrupt characters since it cuts multibyte chars mid-sequence.
Here's a UTF-8-aware version:
func substr(input string, start int, length int) string {
asRunes := []rune(input)
if start >= len(asRunes) {
return ""
}
if start+length > len(asRunes) {
length = len(asRunes) - start
}
return string(asRunes[start : start+length])
}
Go strings are not null terminated, and to remove the last char of a string you can simply do:
s = s[:len(s)-1]