Я пытаюсь прочитать с консоли всю строку (включая пробелы), а затем обработать ее. Используя bufio.ReadString, символ новой строки читается вместе с вводом, поэтому я придумал следующий код для обрезки символа новой строки:
input,_:=src.ReadString('\n')
inputFmt:=input[0:len(input)-2]+"" //Need to manually add end of string
Есть ли более идиоматический способ сделать это? То есть существует ли уже библиотека, которая заботится о конечном нулевом байте при извлечении подстрок за вас?
(Да, я знаю, что уже есть способ прочитать строку без символа новой строки в go readline -> string, но я ищу больше элегантных манипуляций со строкой.)
s = s[:len(s)-1]
подойдет.Строки Go не заканчиваются нулем, и чтобы удалить последний символ строки, вы можете просто сделать:
источник
Чтобы избежать паники при вводе нулевой длины, оберните операцию усечения в if
источник
Это самый простой способ выполнить подстроку в Go
источник
ПРЕДУПРЕЖДЕНИЕ: работа только со строками будет работать только с ASCII и будет считаться неверным, если ввод является символом в кодировке, отличном от ASCII UTF-8, и, вероятно, даже приведет к повреждению символов, поскольку он вырезает многобайтовые символы в середине последовательности.
Вот версия с поддержкой UTF-8:
источник
Чтобы получить подстроку
найти позицию "sp"
вырезать строку с помощью логического массива
https://play.golang.org/p/0Redd_qiZM
источник
8 лет спустя я наткнулся на этот драгоценный камень, и все же я не верю, что на исходный вопрос OP действительно был дан ответ:
Хотя этот
bufio.Reader
тип поддерживаетReadLine()
метод, который одновременно удаляет,\r\n
и\n
он предназначен как функция низкого уровня, которую неудобно использовать, потому что необходимы повторные проверки.IMO идиоматический способ удалить пробелы - использовать библиотеку строк Golang :
Посмотрите этот пример в действии на игровой площадке Голанга: https://play.golang.org/p/HrOWH0kl3Ww
источник