簡體   English   中英

計算Java中的字符串空間

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM