www.masahiko.info
IT+
www.masahiko.info
デベロッパー、ITプロ向けの技術情報Webマガジン。アイティプラス(IT Plus)。
IT+
▼個別記事ページ

2007/09/28 00:04 【カテゴリ:.NET Tips & Tricks】 (更新:2007/09/28 00:20)

改行されない長い英数字の判定方法 このエントリーを含むはてなブックマーク

ご存じのとおり、HTMLコードでURLなどの長い英数字を記述すると、自動的に改行されずに、画面のレイアウトが崩れてしまうことがあります。

これに対応するには、適切な位置に改行(<br>タグ)、もしくは単語ブレーク(<wbr>タグ)を挿入する必要があります。単語ブレークの場合、HTMLページのテキストをコピーした場合に、実際の改行が入らないというメリットがあり、特にソース コードの場合に便利です。
(ちなみにIEでは、「word-break: break-all;」というスタイルを適用することで、すべての文字で単語ブレークが可能になります。)

このような改行や単語ブレークの挿入をプログラムで自動化する場合、「自動的に改行されない英数字かどうか」(つまり「HTMLコードで単語と見なされる英数字」。以降、単語化される英数字)を判別して単語の長さを測定する必要があります。

その際、実際にはどのような文字が、「単語化される英数字」に該当するのかが悩みでした。

そこで、それをFirefoxで調べてみました。調べた限りでは、「単語化される英数字」は以下のとおりで、ASCIIコードのすべて(=128種類のローマ字、数字、記号のうち、制御コードは除く)のようでした。

以下の【コード】の表記の意味は「16進数(=10進数)」です。

【コード】0x21(=33)~0x2f(=47)
【文字】!"#$%&'()*+,-./

【コード】0x30(=48)~0x39(=57)
【文字】0123456789

【コード】0x3a(=58)~0x40(=64)
【文字】:;<=>?@

【コード】0x41(=65)~0x5a(=90)
【文字】ABCDEFGHIJKLMNOPQRSTUVWXYZ

【コード】0x5b(=91)~0x60(=96)
【文字】[\]^_`

【コード】0x61(=97)~0x7a(=122)
【文字】abcdefghijklmnopqrstuvwxyz

【コード】0x7b(=123)~0x7e(=126)
【文字】{|}~

つまり、以下のようなコードで、各文字が「単語化される英数字」かどうかを判定できます(1文字ずつの判定)。なお、oneCharはChar型(char型)の変数。

【VBコード】

' ASCIIコードを取得
Dim code As Integer = Asc(oneChar)
' 単語化される英数字を判定
If ((33 <= code) And (code <= 126)) Then
  ' oneCharは単語化される英数字です
End If

【C#コード】

// ASCIIコードを取得
int code = (int)oneChar;
// 単語化される英数字を判定
if ((33 <= code) && (code <= 126))
{
  // oneCharは単語化される英数字です
}

| 個別記事ページ表示中 | コメント書込↓ | トラックバック作成↓ |
コメント[0 items] & トラックバック[0 items]
コメントを書き込む














トラックバックを作成する
以下のURLにトラックバックpingを送信してください。
トラックバックURL:
http://www.masahiko.info/blog/mt-tb.cgi/836

|| Top | Profile | Works | Diary || IT+ | #BLOG | MyView ||
【リンクについて】→詳細を見る
リンク・フリーです。事前、事後のご連絡は必要ありません。
【著作権について】→詳細を見る
Copyright © 2003-2008 Masahiko Isshiki. All rights reserved.
(引用と私的使用以外の記事・画像及び情報の無断転載を禁じます)