gpt4 book ai didi

go - 如何避免字符串中出现特殊字符

转载 作者:IT王子 更新时间:2023-10-29 01:56:12 24 4
gpt4 key购买 nike

我正在解析包含 URL 的 XML,我想遍历此 XML 以获取所有 URL 并对每个 URL 发出请求,但字符串包含换行符 \n。我怎样才能避免 URL 中出现这个新行?

Go版本是go1.12.7 darwin/amd64。我有这个问题的解决方案,我只是从字符串中删除这些字符。

package main

import (
"encoding/xml"
"fmt"
"io/ioutil"
"log"
"net/http"
"strings"
)



type SitemapIndex struct {
Locations []string `xml:"sitemap>loc"`
}

type NewsMap struct {
Keyword string
Location string
}

type News struct {
Titles []string `xml:"url>news>title"`
Keywords []string `xml:"url>news>keywords"`
Locations []string `xml:"url>loc"`
}


func main() {
var s SitemapIndex
var n News
newsMap := make(map[string]NewsMap)
resp, _ := http.Get("https://washingtonpost.com/news-sitemaps/index.xml")
bytes, _ := ioutil.ReadAll(resp.Body)

xml.Unmarshal(bytes, &s)

for _, Location := range s.Locations {
tempURL := strings.Replace(Location, "n", "", -1) // how to avoid new lines character in url?
resp, err := http.Get(tempURL)
// do some stuff...
}

如果 Location 上没有这个替换方法,我会出错解析
https://www.washingtonpost.com/news-sitemaps/politics.xml
: net/url: URL 中的无效控制字符
退出状态 1

这是示例 XML 文件 https://www.washingtonpost.com/news-sitemaps/politics.xml

最佳答案

XML 文本包含 Dave C 在评论中提到的换行符。由于 URL 中不允许使用换行符,因此您必须删除换行符。

通过用“”替换换行符(而不是 n)来修复。请注意反斜杠。

tempURL := strings.Replace(Location, "\n", "", -1) 

更好的解决方法是使用 strings.TrimSpace(Dave C 也提到过)。这将处理文件中可能存在的所有无关空白:

tempURL := strings.TrimSpace(Location) 

关于go - 如何避免字符串中出现特殊字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57233041/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com