每两个字符分割一次字符串

5

我想将一个字符串每两个字符分割一次。

例如:

String aString= "abcdef"

我想将字符串分割后得到"ab cd ef",请问如何操作?谢谢 :)


3
你尝试过什么?发生了什么事情?你有查看过 String 上可用的方法,以找到一种允许你基于索引提取字符串部分的方法吗? - Jon Skeet
子字符串可以帮助你 ^^ - Distopic
1
非常感谢大家的帮助,这个答案非常简单并且符合我想做的事情:String repl =“abcdef”。replaceAll(“..(?!$)”,“$0”); - lisa
10个回答

11

使用正则表达式:

        String str= "abcdef";

        String[] array=str.split("(?<=\\G.{2})");

        System.out.println(java.util.Arrays.toString(array));       

输出:

[ab, cd, ef]


这就是它!但我建议使用System.out.println(java.util.Arrays.toString(array));代替for。另外,将输出放在答案中,这样人们就可以看到它的效果。 - acdcjunior
@acdcjunior:感谢您的建议。 - Ankur Lathi
2
使用Java8在Android上输出[ab,cdef]。为什么? - isabsent
它也可以与Java 8一起使用。我在www.jdoodle.com上尝试了一下,它可以工作。 - Ankur Lathi

7
这个基于负向预查的正则表达式应该适合你的需求:
String repl = "abcdef".replaceAll("..(?!$)", "$0 ");

提示:这将避免在最后一次匹配后添加空格,因此您会得到以下输出:

"ab cd ef"

替代方法:

"ab cd ef "

非常感谢!你的答案是最好最简单的答案 :D - lisa
非常欢迎,很高兴它能够奏效。 - anubhava

6
如果您希望输出的字符串包含额外空格,您可以简单地使用以下代码:
String newString = aString.replaceAll("(..)", "$1 ")

1
String aString= "abcdef";       
int partitionSize=2;
for (int i=0; i<aString.length(); i+=partitionSize)
{
    System.out.println(aString.substring(i, Math.min(aString.length(), i + partitionSize)));
}

这个答案会受益于一个小评论,解释一下正在发生什么以及为什么要这样做。 - STT LCU

1
尝试这个。
    String[] a = "abcdef".split("(?<=\\G..)");
    System.out.println(Arrays.asList(a));

输出

[ab, cd, ef]

出了什么问题? - Leonid Veremchuk
@Leonid Veremchuk:#我也是 - isabsent

0

你可以像这样轻松地完成:

    String k = "sdfjsdf";
    String s = "";
    for (int i=0;i<k.length();i++){
        s+=k.charAt(i);
        if (i%2 != 0){
            s+=" ";
        }
    }

0
String s = "teststr";
StringBuilder tmp = new StringBuilder();

for (int i = 0; i < s.length(); i++) {
    tmp.append(s.charAt(i));
    if (i % 2 == 1) tmp.append(" ");
}

System.out.println(tmp.toString());

0

试试这个:

StringBuilder sb= new StringBuilder();
for (int i=0; i<s.length()-2;i+=2){
     sb.append(s.substring(i, i+2));
 if (i!=s.length()-3){
    sb.append(" ");
     }
}

0
public static void main(String[] args) {

    String st = "abcdefg";
    ArrayList<String> array = new ArrayList<String>();

    int i = 0;
    while(i<st.length())
    {
        int j=i+2;
        if(j>st.length())
            j=st.length();
        array.add(st.substring(i,j));
        i=j;
    }

    System.out.println(array);

}

0

也试试这个

    String aString= "abcdef";
    String[] arr=aString.split("(?<=\\G.{2})");

使用Java8在Android上输出[ab,cdef]。为什么? - isabsent

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接