답변
누락 될 수 있습니다. 베어 - 뼈, 렛 모두-다른-걱정을-에 대해 - 더 - 메모리 관리, 기계, what's-A-정규식 방법 :
int hex_to_value(char hex) {
if (hex >= '0' && hex <= '9') { return hex - '0'; }
if (hex >= 'A' && hex <= 'F') { return hex - 'A' + 10; }
if (hex >= 'a' && hex <= 'f') { return hex - 'f' + 10; }
return -1;
}
void unescape(char* dst, const char* src) {
// Write the translated version of the text at 'src', to 'dst'.
// All sequences of '&#xx;', where x is a hex digit, are replaced
// with the corresponding single byte.
enum { NONE, AND, AND_HASH, AND_HASH_EX, AND_HASH_EX_EX } mode;
char first_hex, second_hex, translated;
mode m = NONE;
while (*src) {
char c = *src++;
switch (m) {
case NONE:
if (c == '&') { m = AND; }
else { *dst++ = c; m = NONE; }
break;
case AND:
if (c == '#') { m = AND_HASH; }
else { *dst++ = '&'; *dst++ = c; m = NONE; }
break;
case AND_HASH:
translated = hex_to_value(c);
if (translated != -1) { first_hex = c; m = AND_HASH_EX; }
else { *dst++ = '&'; *dst++ = '#'; *dst++ = c; m = NONE; }
break;
case AND_HASH_EX:
translated = hex_to_value(c);
if (translated != -1) {
second_hex = c;
translated = hex_to_value(first_hex) << 4 | translated;
m = AND_HASH_EX_EX;
} else {
*dst++ = '&'; *dst++ = '#'; *dst++ = first_hex; *dst++ = c;
m = NONE;
}
break;
case AND_HASH_EX_EX:
if (c == ';') { *dst++ = translated; }
else {
*dst++ = '&'; *dst++ = '#';
*dst++ = first_hex; *dst++ = second_hex; *dst++ = c;
}
m = NONE;
break;
}
}
}
지루한, 합리적인 것보다 훨씬 더 많은 코드가 아니라 하드 :)
또한 ISO-8859-1 이외의 항목 (또는 심지어 런타임 환경의 문자 집합에 얼마나 행운인지에 따라 ASCII)을 신경 쓰지 않는다고 가정합니다. –
물론. 그러나 다시 우리가 그런 것을 신경 쓰면 우리는 왜 C를 사용할 것입니까? :) –
... 사실, 번호가 매겨진 HTML 엔티티는 16 진수가 아닌 십진수를 사용합니다. 그렇죠? 한숨. 그래도 기본적인 아이디어를 얻을 수 있습니다. –
문자열에서 숫자를 파싱 한 다음 atoi
을 사용하여 숫자로 변환 한 다음 문자로 변환하려고합니다.
char html[] = "'";
char* pch = &html[2];
int n = 0;
char c = 0;
pch[2] = '\0';
n = atoi(pch);
c = n;
지금 C가 '
입니다 :
이 ~이 완전히 인위적인 그래서 20초 내가 쓴 무언가이다. 또한 정말 ... HTML 문자열에 대해 알고하지 않습니다 그래서 당신에게 만 관리에 대한 &#xx;
스타일의 실체를 가정, 특히 어려운이 아닌 뭔가
"GNU recode"- 명령 행 프로그램과 라이브러리가 있습니다. http://recode.progiciels-bpi.ca/index.html
특히 HTML 문자를 인코딩/디코딩 할 수 있습니다.
- 1. C에서 16 진수를 문자열로 변환하는 방법은 무엇입니까?
- 2. 문자열을 부분 문자열로 변환하는 방법은 무엇입니까?
- 3. 이진 문자열을 십진수 문자열로 변환하는 것은 C#
- 4. C에서 코드로 문자열을 변환하는 방법 #
- 5. 숫자를 문자열로 변환하는 방법은 무엇입니까?
- 6. Ada.Real_TIme.Time을 문자열로 변환하는 방법은 무엇입니까?
- 7. WebResponse.GetResponseStream을 문자열로 변환하는 방법은 무엇입니까?
- 8. ASCII 바이트 벡터를 문자열로 변환하는 방법은 무엇입니까?
- 9. 자바에서 UTF-8 문자열을 RTF 문자열로 변환하는 방법은 무엇입니까?
- 10. Java에서 TIS-620 문자열을 UTF-8 문자열로 변환하는 방법은 무엇입니까?
- 11. 코드 포인트 문자열을 나타내는 문자열로 변환하는 방법은 무엇입니까?
- 12. 파이썬에서 인쇄 할 수없는 문자열을 일반 문자열로 변환하는 방법은 무엇입니까?
- 13. C++ 문자열을 char *로 변환하는 방법은 무엇입니까?
- 14. 문자열을 배열로 변환하는 방법은 무엇입니까?
- 15. C에서 문자열을 char로 변환하는 방법
- 16. C에서 문자열을 int로 변환하는 방법
- 17. 문서를 다시 문자열로 변환하는 방법은 무엇입니까?
- 18. escapeed 문자열로 unescape 문자열을 변환하는 도구를 찾고
- 19. 정수를 gnuplot에서 문자열로 변환하는 방법은 무엇입니까?
- 20. WIN32_FIND_DATA를 (를) 문자열로 변환하는 방법은 무엇입니까?
- 21. 완벽한 정밀도로 문자열을 실수로 변환하는 방법은 무엇입니까?
- 22. 문자열을 NSDate로 변환하는 방법은 무엇입니까?
- 23. jQuery 객체 배열을 HTML 문자열로 변환하는 방법
- 24. JavaScript에서 문자열을 XML 객체로 변환하는 방법은 무엇입니까?
- 25. Perl에서 문자열을 유니 코드 문자열로 변환하는 방법
- 26. DateTime 문자열을 형식 문자열로 변환하는 방법
- 27. null 문자열을 빈 문자열로 변환하는 방법
- 28. char 문자열을 std 문자열로 변환하는 방법
- 29. C에서 char을 정수로 변환하는 방법은 무엇입니까?
- 30. C에서 바이트 배열로 구조를 변환하는 방법은 무엇입니까?
시작을 위해 다음을 참조하십시오. http://en.wikipedia.org/wiki/List_of_XML_and_HTML_character_entity_references – Pirooz
C? 그렇다면 왜? 그렇지 않다면 왜 지구상에서 ** 어떤 종류의 텍스트 조작을하기 위해 ** C를 선택하겠습니까? –
미래에 누군가가 Google 번역을 위해 이것을 필요로하는 경우 두통에서 벗어나 HTML 출력 대신 텍스트 대신 Google 출력물을 요구하십시오. :) 문서가 도청되어 기본 출력물이 텍스트라고합니다. [JSON 구문 분석이 필요할 수도 있지만 쉽습니다. 에 대한 라이브러리를 찾으려면]. –