profilePicture := strings.Replace(tempProfile, "/", "%2F", -2)
我尝试了这段代码,但它替换了字符串
中的所有/
tempProfile = "https://firebasestorage.googleapis.com/v0/b/passporte-b9070.appspot.com/o/profilePicturesOfAbmin/original/1492674641download (3).jpg?alt=media"
想要的结果是
tempProfile = "https://firebasestorage.googleapis.com/v0/b/passporte-b9070.appspot.com/o/profilePicturesOfAbmin%2Foriginal%2F1492674641download (3).jpg?alt=media"
答案 0 :(得分:4)
首先,来自documentation:
Replace返回字符串s的副本,其中前n个非重叠的old实例替换为new。如果old为空,则它在字符串的开头和每个UTF-8序列之后匹配,对k-rune字符串产生最多k + 1个替换。 如果n< 0,替换次数没有限制。 (强调添加)
这解释了为什么你的-2没有工作。
解决所述问题的最简单方法可能是这样的:
parts := strings.Split(tempProfile, "/")
parts = append(parts[:len(parts)-3], strings.Join(parts[len(parts)-3:], "%2F"))
profilePicture := strings.Join(parts, "/")
但更好的方法可能是使用url
包进行正确的URL编码。