如何更换最后两个' /' Go中字符串中的字符

时间:2017-04-20 07:55:19

标签: go

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"

1 个答案:

答案 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编码。