从C#中的URL中删除锚点

时间:2010-05-22 20:24:49

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

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

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

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

谢谢!

4 个答案:

答案 0 :(得分:3)

如果您在字符串中使用了src,则可以使用

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

没有#将返回src。如果您正在检索的值都是网址,那么这应该有效,#是网址中的一个书签,可以将您带到页面的特定部分。

答案 1 :(得分:2)

假设网址不包含“#”

,您应该可以
  

字符“#”不安全且应该      总是被编码,因为它在万维网和其他网络中使用      用于从可能的片段/锚标识符界定URL的系统      跟着它。

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

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

答案 2 :(得分:1)

来自维基百科:

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

答案 3 :(得分:0)

删除网址的de锚是不安全的。我的意思是像网站这样的ajax利用锚点来跟踪上下文。比如gmail。如果您转到http://www.gmail.com/#inbox,则会直接转到收件箱,但如果您转到http://www.gmail.com/#all,则会转到所有邮件。 即使响应是文件,服务器也可以根据锚点给出不同的响应。