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