[英]Count string spaces in Java
問題很簡單。
“ abcd” .length()== 4
另外,打印時需要4個空格。
那么,這呢?
“漢語” .length()== 2
但是需要四個空格...
是否有任何庫或方法可以計算每種語言的空間? (我不需要一些圖形方法...)
例。 單詞“안녕abc”由System.out.println()占用7個空格
-------
안녕abc
String.length() : 5
您希望字符串的顯示寬度以空格計算。
取決於字體。 有時對於亞洲文字,會使用其他字體或字體大小。 此外,某些字體的空格可能非常狹窄。 n
-width是比較常用的度量。
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將“四舍五入”。 如您所見,即使字體是“ monospaced”,也不會給出精確的6個空格。
對於表格輸出,最好將HTML與TABLE等配合使用。
假設您用空格表示字節。
System.out.println( "漢語".getBytes().length ); // -> 6
其中String.length()返回字符序列的長度(2)。
打印字符所需的可測量空間取決於所使用的字體。
使用Graphics對象,您可以使用字體指標來計算:
g.setFont(new Font("SomeSuitableFont", Font.BOLD, 24));
int width = g.getFontMetrics().stringWidth("漢語");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.