到网上找到了篇文章,按照方法2执行,挺顺利的,获得了输入值,打印出来也是正确的.
坑呢,在这,当你用获取的Input和拼接其他字符串的时候,总得不到正确的结果.
表象是 Input(1234)+"abc" 打印结果是 abc4,其实真实的内容是 1234\rabc,打印出来就是 abc4
现在看来这个问题很简单,如https://zhidao.baidu.com/question/115845978.html, 字符串回车了,打印出来就是这样
但是当时,没有想到,在其他语言,获取输入很easy
- 怀疑得到的是字符数组,而不是字符串格式
- 判断输入的字符串和直接写好的字符串是否相同,即 Input(1234)="1234" ,毫无疑问输出false
- 接着看了Input的长度,果然有差异,将其打印,
- 直接打印都是数字
- 于是将前面按照string类型打印,最后的两位按照原来的数字打印.也可以按照格式化打印 printf
果然出现了13 10
问题解决了
参考代码
package main
import (
"bufio"
"fmt"
"os"
"strings"
)
func main() {
//参考 version 2 https://my.oschina.net/zengsai/blog/3719
f := bufio.NewReader(os.Stdin) //读取输入的内容
fmt.Print("请输入一些字符串>")
var Input string
Input, _ = f.ReadString('\n') //定义一行输入的内容分隔符。
fmt.Println("字符串长度",len(Input))
for i:=0;i<len(Input);i++{
if i>=len(Input)-2{//最后一个字符,输出数字
fmt.Print(Input[i])
}else{
fmt.Print(string(Input[i]))
}
}
//windows平台操作
//分隔符'\n' Input是 xxx\r\n 编码是1310
//分隔符'\r' Input是 xxx\r 编码是13
Input = strings.Replace(Input, "\n", "", -1)
Input = strings.Replace(Input, "\r", "", -1)
fmt.Println("")
fmt.Println("字符串长度",len(Input))
for i:=0;i<len(Input);i++{
fmt.Print(string(Input[i]))
}
}
网友评论