| ページ一覧 | ブログ | twitter |  書式 | 書式(表) |

MyMemoWiki

HTML 長い文字列の改行

提供: MyMemoWiki
ナビゲーションに移動 検索に移動

HTML 長い文字列の改行

  • ブロック要素の中に長い文字列を置くと、折り返されない。
  • 例えば、IEとFirefoxでは、divタグの中に長い文字列を置いたときに挙動が異なる。

http://yoosee.net/d/archives/2005/01/04/002.html http://archiva.jp/web/html-css/20060808013000.html

  • GMailでは、<wbr>を使ってた。

0607 wbr.jpg


適当な位置に、<wbr>を入れる

  • HTMLタグ以外の特殊文字はエスケープされていること
  1. public static String blockComment(String value, int column) {
  2. final String WORD_BREAK_STR = "<wbr>";
  3.  
  4. char[] c = value.toCharArray();
  5. StringBuilder buf = new StringBuilder(c.length + 20);
  6. boolean isInTag = false;
  7. boolean isEscChar = false;
  8. int charCnt = 0;
  9.  
  10. for(int i=0; i<c.length; i++) {
  11. switch (c[i]) {
  12. case '<': isInTag = true; break;
  13. case '>': isInTag = false; break;
  14. case '&': isEscChar = true; break;
  15. case ';': isEscChar = false; break;
  16. default:
  17. }
  18. if (!isInTag) {
  19. try {
  20. charCnt += String.valueOf(c[i]).getBytes("Shift_JIS").length;
  21. } catch (UnsupportedEncodingException e) {}
  22. }
  23. if (isEscChar) {
  24. if (c[i]=='&') {
  25. charCnt++;
  26. }
  27. }
  28. buf.append(c[i]);
  29. if (charCnt >= column) {
  30. buf.append(WORD_BREAK_STR);
  31. charCnt = 0;
  32. }
  33. }
  34. return buf.toString();
  35. }