- PR -

文字列の長さ

1
投稿者投稿内容
クロスポ
常連さん
会議室デビュー日: 2005/07/27
投稿数: 22
投稿日時: 2007-04-05 12:50
はじめまして。
「Arial Unicode MS」のString文字列の文字数では
なく、長さを取得する方法ってありますでしょうか。

Fontクラスかなんかで行うのでしょうか。
初心者ですいません。
よろしくお願いします。

クロスポ
常連さん
会議室デビュー日: 2005/07/27
投稿数: 22
投稿日時: 2007-04-05 12:53
たとえば、文字列「あcsあ12」などでフォント8サイズ
の文字の幅が知りたいです。
SUK2
ベテラン
会議室デビュー日: 2005/12/27
投稿数: 69
投稿日時: 2007-04-05 12:59
エスパーじゃ無いので、「長さ」が何を指すのか解りませんが

バイト長 → String.getBytesメソッドで取得した配列の要素数
ピクセル数 → Java2Dを使用して取得(プラットフォーム、フォント、フォントサイズ、フォントスタイル、、、etc 様々な要因によって変化する)

といった事でしょうか?
後者は取得した所であまり意味がありませんが・・・。
SUK2
ベテラン
会議室デビュー日: 2005/12/27
投稿数: 69
投稿日時: 2007-04-05 13:06
おっと、タイミング被りましたね。

後者の方法で取得出来なくも無いですよ。

コード:
Font font = new Font("HGPゴシックE", Font.TRUETYPE_FONT, 8);
BufferedImage img = new BufferedImage(width, height, BufferedImage.TYPE_3BYTE_BGR);
Graphics2D g2 = img.createGraphics();
Rectangle2D rectangle = font.getStringBounds("あcsあ12", g2.getFontRenderContext());
int w = rectangle.getWidth(); //横方向のピクセル数

びしばし
大ベテラン
会議室デビュー日: 2002/03/13
投稿数: 181
投稿日時: 2007-04-05 13:09
引用:

クロスポさんの書き込み (2007-04-05 12:53) より:
たとえば、文字列「あcsあ12」などでフォント8サイズ
の文字の幅が知りたいです。



FontMetricクラスについて調べてみましょう。
http://java.sun.com/docs/books/tutorial/2d/text/measuringtext.html
unibon
ぬし
会議室デビュー日: 2002/08/22
投稿数: 1532
お住まい・勤務地: 美人谷        良回答(20pt)
投稿日時: 2007-04-05 13:10
引用:

クロスポさんの書き込み (2007-04-05 12:50) より:
「Arial Unicode MS」のString文字列の文字数では
なく、長さを取得する方法ってありますでしょうか。


Java 1.2 頃の知識で回答しますと、FontMetrics クラスでできるはずです。
http://java.sun.com/j2se/1.5.0/ja/docs/ja//api/java/awt/FontMetrics.html
FontMetrics のインスタンスは Graphics から取得できます。
http://java.sun.com/j2se/1.5.0/ja/docs/ja//api/java/awt/Graphics.html#getFontMetrics(java.awt.Font)
しかし、なぜ2種類(引数に Font があるメソッドとないメソッド)あるのかがわたし的には謎です。
使い方はネットで検索すれば出てくるでしょう。

なお、古臭そうなクラスなので、最近ならもっと洗練された API がひょっとしたら存在するのかもしれません。

--
unibon {B73D0144-CD2A-11DA-8E06-0050DA15BC86}
クロスポ
常連さん
会議室デビュー日: 2005/07/27
投稿数: 22
投稿日時: 2007-04-05 13:57
沢山の返信ありがとうございます。

new Font("HGPゴシックE", Font.TRUETYPE_FONT, 9);
の部分はでArivalUnicodeMSを指定すればよいのでしょうか。

がんばってみます^^
1

スキルアップ/キャリアアップ(JOB@IT)