为了账号安全,请及时绑定邮箱和手机立即绑定

从字符串解析日期:隐藏的符文

从字符串解析日期:隐藏的符文

Go
饮歌长啸 2022-09-12 20:23:07
我正在直接从HTML文件中解析日期,并尝试将它们转换为日期。但是,这样做总是反映在错误中;最奇怪的部分是,如果我直接粘贴字符串,我能够解析。layout := "02-01-2006 15:04:05"t, err := time.Parse(layout, *date)if err != nil {    fmt.Println( err)}收益 率:parsing time "12-06-2021   00:00:31" as "02-01-2006 15:04:05": cannot parse "  00:00:31" as "15"但是,如果我试图直接从字符串解析,它可以工作:layout := "02-01-2006 15:04:05"date := "12-06-2021   00:00:31"t, err := time.Parse(layout, date)if err != nil {    fmt.Println( err)}工作正常。我尝试以各种可能的方式删除空格,但问题仍然存在:date2 := *datedate2 = strings.TrimSpace(date2)date2 = strings.TrimRight(date2, "\r\n")date2 = strings.TrimRight(date2, "\n")space := regexp.MustCompile(`\s+`)date2 = space.ReplaceAllString(date2, "")date2 = strings.ReplaceAll(date2, " ", "")date2 = strings.ReplaceAll(date2, "\r", "")date2 = strings.ReplaceAll(date2, "\n", "")这表明存在隐藏的符文。最后,我求助于在原始字符串(来自指针)和我粘贴的版本中打印实际的符文,这就是我得到的。原始字符串:0: U+0031 '1'1: U+0033 '3'2: U+002D '-'3: U+0030 '0'4: U+0037 '7'5: U+002D '-'6: U+0032 '2'7: U+0030 '0'8: U+0032 '2'9: U+0031 '1'10: U+00A012: U+0031 '1'13: U+0030 '0'14: U+003A ':'15: U+0030 '0'16: U+0030 '0'17: U+003A ':'18: U+0030 '0'19: U+0030 '0'手写字符串:0: U+0031 '1'1: U+0032 '2'2: U+002D '-'3: U+0030 '0'4: U+0036 '6'5: U+002D '-'6: U+0032 '2'7: U+0030 '0'8: U+0032 '2'9: U+0031 '1'10: U+0020 ' '11: U+0030 '0'12: U+0030 '0'13: U+003A ':'14: U+0030 '0'15: U+0030 '0'16: U+003A ':'17: U+0033 '3'18: U+0032 '2'我们可以立即发现问题:在位置11处有一个额外的符文,但由于某种原因,它现在被显示出来;怎么会这样?这是什么?以及如何删除它?
查看完整描述

1 回答

?
拉风的咖菲猫

TA贡献1995条经验 获得超2个赞

U+00A0 是不间断空格字符。它通常用于格式化为供人类使用的日期时间,以确保日期时间不会被显示程序包装。

您可能只想先尝试用常规空格替换任何字符。\uA0

至于为什么正则表达式不会做任何事情,它与你的正则表达式不匹配,因为文档说它是严格的\s

\s             whitespace (== [\t\n\f\r ])


查看完整回答
反对 回复 2022-09-12
  • 1 回答
  • 0 关注
  • 160 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号