2010-05-22 3 views
1

내가 XML 문서에서 SRC 값을 끌어하기 위해 노력하고있어, 나는 그것을 테스트하고있어 하나의 SRC는 다음과 같습니다C#으로 URL에서 앵커를 제거

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

는 그 생성 파일을 열 때 문제가 발생했습니다. 그 # (stuff) 접미사가 불려지는지 모르겠다. 그래서 나는 운을 찾아서 대답을 찾지 못했다. 가능한 경우 제거하는 간단한 방법이 필요합니다. #을 검색하고 아무 것도 제거하는 함수를 작성할 수 있다고 가정합니다. 그러나 파일 이름에 # 기호가 포함되어 있으면 파일이 손상 될 수 있습니다 (또는 파일에도 해당 기호가있을 수 있습니까?)

고마워요! 위키

+1

앵커라고합니다. –

+0

업데이트 됨, 감사합니다! – kcoppock

답변

1

당신이 사용할 수있는 #없이 SRC를 반환

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

. retreiving하는 값이 모두 웹 URL이라면 #이 URL의 책갈피이므로 페이지의 특정 부분으로 이동합니다.

+0

이것이 나에게 가장 쉬운 방법이었습니다. 도움을 주셔서 감사합니다! – kcoppock

+0

다음과 같이 호출됩니다. srcstring.Substring (0, srcstring.LastIndexOf ("#")); – NucS

1

:

#은 웹 페이지 또는 "조각 식별자"소개하는 다른 자원의 URL에 사용되는 - 해당 자원 내의 위치를 ​​정의하는 ID를. 예를 들어 URL http://en.wikipedia.org/wiki/Number_sign#Other_uses에서 # (Other_uses) 다음 부분은 HTML에서 표시되는 태그를 표시하도록 디스플레이가 이동되어야 함을 나타내는이 경우 표시 식별자입니다.

2

URL이는 "#"을 포함하지 않을 것이라는 가정은

문자 "#은"안전하지 않은이며이 조각에서 URL을 구분하는 월드 와이드 웹과 다른 시스템에서 사용되기 때문에 항상 인코딩해야/앵커 식별자는 일 수 있습니다.

Source ("#"또는 "안전하지 않음"으로 검색).

따라서 String.Split()에 "#"을 분할 문자로 사용하십시오. 이것은 당신에게 2 부분을 제공해야합니다. 매우 드문 경우이지만 더 많은 이벤트를 제공합니다. 마지막 이벤트를 버리고 나머지 이벤트에 다시 참여하십시오. 당신이 문자열의 SRC가 있다면

+0

감사합니다. – kcoppock

0

URL의 앵커를 제거하는 것은 안전하지 않습니다. 제 말은 아약스 같은 사이트가 컨텍스트를 추적하기 위해 앵커를 사용한다는 것입니다. 예를 들어 Gmail. http://www.gmail.com/#inbox으로 가면받은 편지함으로 바로 이동하지만 http://www.gmail.com/#all으로 가면 모든 메일로 이동합니다. 응답이 파일 일지라도 서버는 앵커에 따라 다른 응답을 제공 할 수 있습니다.

+0

여기에 자신의 대답을 모순되지 않았습니까? 예, 클라이언트는 앵커에 따라 다른 콘텐츠를 렌더링 할 수 있지만 일반적으로 서버는 항상 동일한 응답을 제공합니다. 여기 중요한 부분은 Ajax 다. 그리고 그것은 클라이언트 측에서 발생합니다. –

+0

또한 제 경우에는 중요하지 않습니다. 이들은 모두 로컬 XML 파일이며, 실제 웹 요청이 아닙니다. 하지만 앞으로의 프로젝트에서이 점을 염두에 두는 것이 좋습니다. – kcoppock

+0

@BurningIce, 앵커가 서버 응답에 부작용을 줄 수 있다는 것을 의미합니다. http://www.gmail을 방문하면co.kr/# all, gmail은 모든 메일을 다시 보내지 않으며 브라우저는 앵커 (앵커는 #inbox, #all, #buzz 등)를 기반으로 필터링합니다. 요청 된 전체 URL을 기반으로 응답하는 서버입니다. – Fede