簡體   English   中英

Java中的格式字符串,以字節為單位

[英]Format String in Java regarding its length in bytes

假設我在Java中有一個包含非ASCII字符的字符串,我想使用String.format()來設置它,這樣格式化的字符串將具有字符串字節長度的最小寬度。

String s = "æøå";
String.format(l, "%" + 10 + "s" , s);

這將導致一個帶有7個前導空格的字符串。

但我想要的是應該只有4個前導空格,因為原始字符串的大小為6個字節。

這似乎是一個常見的要求,所以我想問一下是否有任何已經構建的類可以實現這一點,或者我應該自己去實現Formattable接口?

字符串沒有多個字節 - 它有許多字符 表示字符串所需的字節數取決於您使用的編碼。 我不知道在填充方面做任何內置的事情(我不認為這常見的要求)。 您可以向CharsetEncoder詢問每個字符的最大平均字節數,但是我沒有看到任何方法獲得特定字符串的字節數而基本上沒有進行編碼:

Charset cs = Charset.forName("UTF-8");
ByteBuffer buffer = cs.encode("foobar");
int lengthInBytes = buffer.remaining();

如果你要在字符串編碼無論如何 ,你可能只想進行編碼,工作了多少填充是必需的,然后寫編碼的填充出來,然后寫已編碼的文本。 這實際上取決於您對數據的處理方式。

String s ="æøå";
int size = s.getBytes("UTF8").length;
String.format("%" + (10 - size) + "s" , s); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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