【问题标题】:Remove anchor from URL in C#从 C# 中的 URL 中删除锚点
【发布时间】:2011-02-22 19:04:40
【问题描述】:

我正在尝试从 XML 文档中提取 src 值,而在我正在测试它的文件中,src 是:

<content src="content/Orwell - 1984 - 0451524934_split_2.html#calibre_chapter_2"/>

这会在尝试打开文件时产生问题。我不确定那个 #(stuff) 后缀叫什么,所以我没有运气寻找答案。如果可能的话,我只是想要一种简单的方法来删除它。我想我可以编写一个函数来搜索 # 并在之后删除任何内容,但是如果文件名包含 # 符号(或者文件甚至可以具有该符号吗?),这会中断

谢谢!

【问题讨论】:

    标签: c# xml html-parsing xml-parsing


    【解决方案1】:

    如果你有一个字符串中的 src,你可以使用

    srcstring.Substring(0,srcstring.LastIndexOf("#"));
    

    这将返回不带 # 的 src。如果您要检索的值都是 web url,那么这应该可以工作,# 是 url 中的书签,可将您带到页面的特定部分。

    【讨论】:

    • 叫做:srcstring.Substring(0,srcstring.LastIndexOf("#"));
    【解决方案2】:

    假设 URL 不包含“#”应该没问题

    字符“#”是不安全的,应该 总是被编码,因为它用于万维网和其他 系统将 URL 与可能的片段/锚标识符分隔 跟着它。

    Source(搜索“#”或“不安全”)。

    因此只需使用String.Split() 和“#”作为分割字符。这应该给你2个部分。在极不可能发生的情况下,它会提供更多,只需丢弃最后一个并重新加入其余部分。

    【讨论】:

      【解决方案3】:

      来自维基百科:

      # 用于网页或其他资源的 URL 以引入“片段标识符”——定义该资源中位置的 id。例如,在 URL http://en.wikipedia.org/wiki/Number_sign#Other_uses 中,# (Other_uses) 后面的部分是片段标识符,在这种情况下,表示应该移动显示以显示 HTML 中由 ... 标记的标签

      【讨论】:

        【解决方案4】:

        删除网址的 de 锚点是不安全的。我的意思是类似 ajax 的网站使用锚来跟踪上下文。例如 gmail。如果你去http://www.gmail.com/#inbox,你直接去你的收件箱,但如果你去http://www.gmail.com/#all,你会去你所有的邮件。 服务器可以根据锚点给出不同的响应,即使响应是一个文件。

        【讨论】:

        • 您在这里不是有点自相矛盾吗...是的,客户端可以根据锚点呈现不同的内容,但服务器通常会给出相同的响应。这里重要的部分是 Ajax,你提到了你自己。这发生在客户端。
        • 另外,在我的情况下没关系,这些都是本地 XML 文件,不会是实际的 Web 请求。不过,对于未来的项目,请牢记这一点。
        • @BurningIce,我的意思是锚点会对服务器响应产生副作用。当您转到gmail.com/#all 时,gmail 不会将您的所有邮件发回给您,然后浏览器会根据您的锚(锚可能是#inbox、#all、#buzz 等)对其进行过滤。根据完整请求的 url,以这种方式响应的是服务器。
        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2015-03-09
        • 2021-05-24
        • 2015-11-07
        • 1970-01-01
        • 2021-05-11
        • 1970-01-01
        相关资源
        最近更新 更多