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

MyMemoWiki

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

提供: MyMemoWiki
ナビゲーションに移動 検索に移動
(ページの作成:「==HTML 長い文字列の改行== *ブロック要素の中に長い文字列を置くと、折り返されない。 *例えば、IEとFirefoxでは、divタグの中…」)
 
 
(同じ利用者による、間の1版が非表示)
1行目: 1行目:
==HTML 長い文字列の改行==
+
==[[HTML 長い文字列の改行]]==
  
 
*ブロック要素の中に長い文字列を置くと、折り返されない。
 
*ブロック要素の中に長い文字列を置くと、折り返されない。
*例えば、IEとFirefoxでは、divタグの中に長い文字列を置いたときに挙動が異なる。
+
*例えば、[[IE]]とFirefoxでは、divタグの中に長い文字列を置いたときに挙動が異なる。
  
 
http://yoosee.net/d/archives/2005/01/04/002.html
 
http://yoosee.net/d/archives/2005/01/04/002.html
 
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 WO[[R]]D_B[[R]]EAK_ST[[R]] = "&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(WO[[R]]D_B[[R]]EAK_ST[[R]]);
 
       charCnt = 0;
 
       charCnt = 0;
 
     }
 
     }

2020年2月16日 (日) 04:26時点における最新版

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