加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

Java中的格式字符串,以字节为单位

发布时间:2020-12-15 08:45:12 所属栏目:Java 来源:网络整理
导读:假设我在 Java中有一个包含非ASCII字符的字符串,我想使用String.format()来设置它,这样格式化的字符串将具有字符串字节长度的最小宽度. String s = "???";String.format(l,"%" + 10 + "s",s); 这将导致一个带有7个前导空格的字符串. 但我想要的是应该只有4个
假设我在 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();

如果您要对字符串进行编码,您可能只想执行编码,计算出需要多少填充,然后编写已编码的填充,然后编写已编码的文本.这实际上取决于您对数据的处理方式.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读