上下文:
我希望有一个固定的字符串长度,因为我正在格式化输出文件,我构建了 2 个函数,它们应该根据我的字符串长度应用于字符串。
- 第一个函数:如果您想要一个 X 字符长的字符串,但您得到的字符串是 X-Y,这会添加空格,直到达到所需的长度,在这种特殊情况下为 Y。这似乎是正确的,它有效
public String formatSpace(String s, int desiredlength){
while (s.length()<desiredlength){
s+=" ";
}
return s;
}
- 第二个函数:如果您想要一个 X 字符长的字符串,但您得到的字符串是 X+Y,则此“删除”字符直到达到所需的长度,在本例中为 Y。好像是错的。
public String truncString(String s, int desiredlength){
return s.substr(0,s.length()-desiredlenght);
}
<小时/>
错误:
我根据在代码的另一部分中测试的字符串长度应用这两个:
[...]//here i built my class
int maxlen = 60;
[...] //here there is more code but it just collects data and I already tested fields
if (field.length()<maxlen){
field = formatSpace(field,maxlen);
}else if (field.length()>maxlen){
field = truncString(field,maxlen);
}
[...] //here i put string on file
我得到的错误是关于字符串索引为负数,我不知道为什么,我尝试了纸上的代码(是的,我知道它很愚蠢)但它在那里工作
为什么第二个功能不起作用? 另外,最好创建一个格式化我的字符串的函数,我应该如何制作它?
<小时/>解决方案:
感谢所有评论的人,我用我编写的这个单一函数解决了我的问题,我什至不再测试字符串,如果它们适合我的长度就可以了,否则我格式化它们:
private String formatString(String s, int length) {
while (s.length() < length) {
s += " ";
}
return s.substring(0, length);
}
最佳答案
substring
中的第二个参数函数是新字符串的长度。为什么你有减法?
这应该有效:
public String truncString(String s, int desiredlength){
return s.substr(0,desiredlenght);
}
关于java - 固定字符串长度添加空格和删除超出的字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48098059/