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

MyMemoWiki

HTML 長い文字列の改行

提供: MyMemoWiki
2020年2月15日 (土) 08:03時点におけるPiroto (トーク | 投稿記録)による版
ナビゲーションに移動 検索に移動

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タグ以外の特殊文字はエスケープされていること
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();
}