相关疑难解决方法(0)

限制字符串中的字符数,并切断其余字符

我需要在日志的末尾创建一个汇总表,其中包含一些在类中获得的值.该表需要以固定宽度格式打印.我已经有了这样做的代码,但我需要将字符串,双精度和整数限制为在代码中硬编码的固定宽度大小.

所以,假设我想打印一个固定宽度的表

    int,string,double,string
    int,string,double,string
    int,string,double,string
    int,string,double,string

    and the fixed widths are: 4, 5, 6, 6.
Run Code Online (Sandbox Code Playgroud)

如果值超过此宽度,则需要切断最后一个字符.例如:

    124891, difference, 22.348, montreal
Run Code Online (Sandbox Code Playgroud)

需要打印的字符串应该是:

    1248 diffe 22.348 montre
Run Code Online (Sandbox Code Playgroud)

我想我需要在构造函数中做一些强制字符串不超过一定数量字符的东西.我可能会将双打和整数转换为字符串,因此我可以强制执行最大宽度要求.

我不知道哪个方法可以做到这一点,或者是否可以实例化一个字符串以表现出来.使用格式化程序只能使用固定格式来打印字符串,但它实际上并不会切断超过最大长度的字符.

java string substring

58
推荐指数
6
解决办法
17万
查看次数

Java - 使用格式化程序标志从左侧截断字符串

我有一个字符串,说:

String s = "0123456789";
Run Code Online (Sandbox Code Playgroud)

我想用格式化程序填充它.我可以这两种方式:

String.format("[%1$15s]", s); //returns [     0123456789]
Run Code Online (Sandbox Code Playgroud)

要么

String.format("[%1$-15s]", s); // returns [0123456789     ]
Run Code Online (Sandbox Code Playgroud)

如果我想截断我做的文字

String.format("[%1$.5s]", s);  // returns [01234]
Run Code Online (Sandbox Code Playgroud)

如果我想从左边截断,我想我可以这样做:

String.format("[%1$-.5s]", s); // throws MissingFormatWidthException
Run Code Online (Sandbox Code Playgroud)

但这失败了,所以我尝试了这个:

String.format("[%1$-0.5s]", s); // throws MissingFormatWidthException
Run Code Online (Sandbox Code Playgroud)

以及:

String.format("[%1$.-5s]", s); // throws UnknownFormatConversionException
Run Code Online (Sandbox Code Playgroud)

那么如何使用格式标志从左侧截断?

java string-formatting

12
推荐指数
2
解决办法
6653
查看次数

标签 统计

java ×2

string ×1

string-formatting ×1

substring ×1