Удалить якорь из URL в C # - PullRequest
1 голос
/ 23 мая 2010

Я пытаюсь получить значение src из документа XML, и в одном, с которым я его тестирую, src:

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

Это создает проблему при попытке открыть файл. Я не уверен, как называется этот суффикс # (материал), поэтому мне не повезло в поисках ответа. Я просто хотел бы простой способ удалить его, если это возможно. Я полагаю, что мог бы написать функцию для поиска # и удаления чего-либо после этого, но это сломало бы, если бы имя файла содержало символ # (или файл мог даже иметь этот символ?)

Спасибо!

Ответы [ 4 ]

3 голосов
/ 23 мая 2010

Если бы у вас был src в строке, вы могли бы использовать

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

Что бы вернуть src без #. Если все значения, которые вы получаете, являются веб-URL-адресами, это должно работать, # - это закладка в URL-адресе, которая приведет вас к определенной части страницы.

2 голосов
/ 23 мая 2010

Вы должны быть в порядке, предполагая, что URL не будут содержать «#»

Символ «#» небезопасен и всегда должен быть закодирован, потому что он используется в World Wide Web и другихсистемы для разграничения URL-адреса от идентификатора фрагмента / якоря, который может следовать за ним.

Источник (поиск по "#" или "небезопасно").

Поэтому просто используйте String.Split() с "#" в качестве символа разделения.Это должно дать вам 2 части.В крайне маловероятном случае это даст больше, просто откажитесь от последнего и вернитесь к оставшемуся.

1 голос
/ 23 мая 2010

Из Википедии:

# используется в URL веб-страницы или другого ресурса для введения «идентификатора фрагмента» - идентификатора, который определяет позицию в этом ресурсе. Например, в URL http://en.wikipedia.org/wiki/Number_sign#Other_uses часть после # (Other_uses) является идентификатором фрагмента, в данном случае указывающим, что дисплей должен быть перемещен, чтобы показать тег, отмеченный ... в HTML

0 голосов
/ 23 мая 2010

Не безопасно удалять привязку URL. Я имею в виду, что сайты, подобные ajax, используют якорь для отслеживания контекста. Например, Gmail. Если вы перейдете на http://www.gmail.com/#inbox,, вы попадете прямо в свой почтовый ящик, но если вы перейдете на http://www.gmail.com/#all,, вы перейдете на всю свою почту. Сервер может дать другой ответ на основании привязки, даже если ответ является файлом.

...