Java 在字符串中插入填充空格
相当基本的问题,但难以形成可接受的形式: 我想通过每3个空格插入一个填充来转换字符串,如 “123456789”->“123456789” “abcdefgh”->“abc def gh” 我的代码目前是Java 在字符串中插入填充空格,java,string,Java,String,相当基本的问题,但难以形成可接受的形式: 我想通过每3个空格插入一个填充来转换字符串,如 “123456789”->“123456789” “abcdefgh”->“abc def gh” 我的代码目前是 public String toSpaceSeparatedString(String s) { if (s == null || s.length() < 3) { return s; } StringBuilder builder = new StringBui
public String toSpaceSeparatedString(String s) {
if (s == null || s.length() < 3) {
return s;
}
StringBuilder builder = new StringBuilder();
int i;
for (i = 0; i < s.length()-3; i += 3) {
builder.append(s.substring(i, i+3));
builder.append(" ");
}
builder.append(s.substring(i, s.length()));
return builder.toString();
}
public String到spaceseparatedstring(字符串s){
如果(s==null | | s.length()<3){
返回s;
}
StringBuilder=新的StringBuilder();
int i;
对于(i=0;i
有人能提供更优雅的解决方案吗?您可以使用
printf
或String.format
如下:
builder.append(String.format("%4s", threeDigitString));
有关格式化输出/字符串的详细信息。您可以使用正则表达式执行此操作:
"abcdefgh".replaceAll(".{3}", "$0 ")
如果已经有一个空间,则不会放置空间:
"abcdef gh".replaceAll("\\s*(..[^ ])\\s*", "$1 "); // --> "abc def gh"
<> >代码> RealPult看起来是最好的,但是如果你考虑一个像12345的数字,它将被转换成123个45。但是在数字上我认为应该是12345谢谢,我找到了一个类似的解决方案,但是对于这样一个简单的任务来说,regex始终是最后的选择真正地我认为regex永远是首选!它可以通过更简单的正则表达式完成。更新了答案。@jellybean:这是一行。如果你对它正在做的事情添加了一个好的注释,或者将其放入一个具有意义的名称的实用方法中,我认为在这里使用regex是非常好的。在更新之后,它的可读性/可接受性要高得多,谢谢。这意味着替换
for
循环中的代码,以及之后的附加,对吗?不错,但我想摆脱这个丑陋的循环。谢谢。。。但这不是我的选择!酷-只是想“超额完成”:)你能提出什么替代方案?