【问题标题】:Adding space between characters在字符之间添加空格
【发布时间】:2012-06-24 08:20:52
【问题描述】:

我想在字符串中每两个字符后添加空格。

例如:

javastring 

我想把它变成:

ja va st ri ng

我怎样才能做到这一点?

【问题讨论】:

标签: java string space


【解决方案1】:

您可以使用正则表达式'..'匹配每两个字符,并用"$0 "替换它以添加空格:

s = s.replaceAll("..", "$0 ");

您可能还想修剪结果以删除末尾的多余空间。

在线查看:ideone

或者,您可以添加一个否定的前瞻断言以避免在字符串末尾添加空格:

s = s.replaceAll("..(?!$)", "$0 ");

【讨论】:

  • 谢谢,你让我免于实现循环。
【解决方案2】:

//Where n = no of character after you want space

int n =2;
StringBuilder str = new StringBuilder("ABCDEFGHIJKLMNOP");
int idx = str.length() - n;
while (idx > 0){
   str.insert(idx, " ");
   idx = idx - n;
}
return str.toString();

说明,这段代码会从右到左添加空格:

str = "ABCDEFGH" int idx = total length - 2; //8-2=6
while (8>0)
{
    str.insert(idx, " "); //this will insert space at 6th position
    idx = idx - n; // then decrement 6-2=4 and run loop again
} 

最终的输出将是

AB CD EF GH

【讨论】:

  • 这段代码会从右向左添加空格,str = "ABCDEFGH" int idx = total length - 2;//8-2=6 while (8>0){ str.insert(idx , " ");//这将在第 6 个位置插入空格 idx = idx - n;// 然后递减 6-2=4 并再次运行循环 } 最终输出将是 AB CD EF GH 希望这个解释有帮助
【解决方案3】:

我为此写了一个通用的解决方案...

public static String insertCharacterForEveryNDistance(int distance, String original, char c){
    StringBuilder sb = new StringBuilder();
    char[] charArrayOfOriginal = original.toCharArray();
    for(int ch = 0 ; ch < charArrayOfOriginal.length ; ch++){
        if(ch % distance == 0)
            sb.append(c).append(charArrayOfOriginal[ch]);
        else
            sb.append(charArrayOfOriginal[ch]);
    }
    return sb.toString();
}

那就这样称呼吧……

String result = InsertSpaces.insertCharacterForEveryNDistance(2, "javastring", ' ');
System.out.println(result);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-26
    • 1970-01-01
    • 1970-01-01
    • 2013-05-14
    相关资源
    最近更新 更多