问题很简单。
" abcd" .length()== 4
另外,打印时需要4个空格。
那么,这个怎么样?
"汉语" .length()== 2
但需要4个空格......
是否有任何库或方法来计算每种语言的空格? (我不想要一些图形方法......)
实施例。单词"안녕abc" System.out.println()
占用7个空格-------
안녕abc
String.length() : 5
答案 0 :(得分:2)
您希望字符串的显示宽度以空格计算。
取决于字体。有时,对于亚洲脚本,会采用其他字体或字体大小。在某些字体中,空格也可能非常窄。 n
- 宽度是用于比较的更常用的衡量标准。
public static double spaceWidth(Font font, String text) {
FontRenderContext frc = new FontRenderContext(font.getTransform(), true, true);
Rectangle2D textRect = font.getStringBounds(text, frc);
Rectangle2D spaceRect = font.getStringBounds(" ", frc);
return textRect.getWidth() / spaceRect.getWidth();
}
public static void main(String[] args) {
Font font = new Font("Monospaced", Font.PLAIN, 10);
System.out.println("Font: " + font.getFamily());
String s = "안녕abc";
// " " (6 spaces)
System.out.printf("'%s' -> %f%n", s, spaceWidth(font, s));
}
6.332791
一个Math.round会#34;#34;事情。如你所见,这不会给出精确的6个空格,即使字体是"等宽的"。
对于表格输出,最好使用带有TABLE等的HTML。
答案 1 :(得分:1)
假设你用空格表示字节数。
System.out.println( "漢語".getBytes().length ); // -> 6
其中String.length()返回字符序列(2)的长度。
打印字符所需的可测量空间取决于使用的字体。
使用Graphics对象,您可以使用字体指标计算:
g.setFont(new Font("SomeSuitableFont", Font.BOLD, 24));
int width = g.getFontMetrics().stringWidth("漢語");