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

MyMemoWiki

「HTML 長い文字列の改行」の版間の差分

提供: MyMemoWiki
ナビゲーションに移動 検索に移動
(ページの作成:「==HTML 長い文字列の改行== *ブロック要素の中に長い文字列を置くと、折り返されない。 *例えば、IEとFirefoxでは、divタグの中…」)
 
7行目: 7行目:
 
http://archiva.jp/web/html-css/20060808013000.html
 
http://archiva.jp/web/html-css/20060808013000.html
  
*GMailでは、<wbr>を使ってた。
+
*GMailでは、&lt;wbr&gt;を使ってた。
  
 
[[File:0607_wbr.jpg]]
 
[[File:0607_wbr.jpg]]
  
 
----
 
----
'''適当な位置に、<wbr>を入れる'''
+
'''適当な位置に、&lt;wbr&gt;を入れる'''
 
*HTMLタグ以外の特殊文字はエスケープされていること
 
*HTMLタグ以外の特殊文字はエスケープされていること
  
 
  public static String blockComment(String value, int column) {
 
  public static String blockComment(String value, int column) {
   final String WORD_BREAK_STR = "<wbr>";
+
   final String WORD_BREAK_STR = "&lt;wbr&gt;";
 
   
 
   
 
   char[] c = value.toCharArray();
 
   char[] c = value.toCharArray();
24行目: 24行目:
 
   int charCnt = 0;
 
   int charCnt = 0;
 
   
 
   
   for(int i=0; i<c.length; i++) {
+
   for(int i=0; i&lt;c.length; i++) {
 
     switch (c[i]) {
 
     switch (c[i]) {
     case '<': isInTag  = true;  break;
+
     case '&lt;': isInTag  = true;  break;
     case '>': isInTag  = false; break;
+
     case '&gt;': isInTag  = false; break;
 
     case '&': isEscChar = true;  break;
 
     case '&': isEscChar = true;  break;
 
     case ';': isEscChar = false; break;
 
     case ';': isEscChar = false; break;
43行目: 43行目:
 
     }
 
     }
 
     buf.append(c[i]);
 
     buf.append(c[i]);
     if (charCnt >= column) {
+
     if (charCnt &gt;= column) {
 
       buf.append(WORD_BREAK_STR);
 
       buf.append(WORD_BREAK_STR);
 
       charCnt = 0;
 
       charCnt = 0;

2020年2月15日 (土) 08:03時点における版

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();
}