トップ 差分 一覧 ping ソース 検索 ヘルプ PDF RSS ログイン

HTML 長い文字列の改行



目次



記事一覧

キーワード

HTML 長い文字列の改行


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

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

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



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

  • HTMLタグ以外の特殊文字はエスケープされていること

public static String blockComment(String value, int column) {
  final String WORD_BREAK_STR = "<wbr>";

  char[] c = value.toCharArray();
  StringBuilder buf = new StringBuilder(c.length + 20);
  boolean isInTag = false;
  boolean isEscChar = false;
  int charCnt = 0;

  for(int i=0; i<c.length; i++) {
    switch (c[i]) {
    case '<': isInTag   = true;  break;
    case '>': isInTag   = false; break;
    case '&': isEscChar = true;  break;
    case ';': isEscChar = false; break;
    default:
    }
    if (!isInTag) {
      try {
        charCnt += String.valueOf(c[i]).getBytes("Shift_JIS").length;
      } catch (UnsupportedEncodingException e) {}
    }
    if (isEscChar) {
      if (c[i]=='&') {
        charCnt++;
      } 
    }
    buf.append(c[i]);
    if (charCnt >= column) {
      buf.append(WORD_BREAK_STR);
      charCnt = 0;
    }
  }   
  return buf.toString();
}



YAGI Hiroto (piroto@a-net.email.ne.jp)
twitter http://twitter.com/pppiroto

Copyright© 矢木 浩人 All Rights Reserved.