9

文字列の2文字ごとにスペースを追加したいと思います。

例えば:

javastring 

これを次のように変換したいと思います。

ja va st ri ng

どうすればこれを達成できますか?

4

3 に答える 3

46

正規表現'..'を使用して2つの文字をそれぞれ一致させ、それをに置き換えて"$0 "スペースを追加できます。

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

結果をトリミングして、最後の余分なスペースを削除することもできます。

オンラインで動作することを確認してください:ideone

または、負の先読みアサーションを追加して、文字列の最後にスペースが追加されないようにすることもできます。

s = s.replaceAll("..(?!$)", "$0 ");
于 2012-06-22T02:06:58.837 に答える
5

//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
于 2015-06-15T14:48:10.190 に答える
1

私はこれに対する一般的な解決策を書きました...

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);
于 2014-05-27T13:32:01.233 に答える