【发布时间】:2019-01-05 13:48:32
【问题描述】:
请说。 为什么代码中的字符串“\xF0\x9F\x98\x81”与参数命令行中的“\xF0\x9F\x98\x81”不一样?
func main() {
text1 := "\xF0\x9F\x98\x81"
text2 := os.Args[1]
}
长度字符串 "text1" = 4, "text2" = 16 if len(text1). 我如何将“text2”转换为“text1”?
【问题讨论】:
-
我对 Go 一无所知,但来自 C# 世界,字符串中的
\x是 编译器 的东西,其中字符串"\bx"由两个字符组成,即钟形字符和字符x。如果你想在接受命令行参数时模仿这个,那么你基本上需要模仿这个。您的字符串由 16 个字符组成,因为\xF0\x9F\x98\x81是 16 个字符,根本没有任何解释。 -
你基本上必须实现一些贯穿字符串的东西,并将所有可能的转义格式/值转换成它们对应的字符。
-
我明白了,但是怎么样?可能在 golang 上已经准备好了,或者有人知道,我该怎么做。对 C# 怎么做,请说。
-
C# 或 .NET 中不支持这样做,除了编译器,显然要编写一些代码来做到这一点。可能会有一些问题,但至少你知道问题是什么,这应该会引导你找到解决方案(假设我对 C# 的了解适用于这种情况)。
标签: string go command-line converter