Java 将字符串拆分为几个两个字符串

Java 将字符串拆分为几个两个字符串,java,string,split,substring,Java,String,Split,Substring,我有这个字符串8S8Q4D1SKCQC2C4S6H4C6DJS2S1C6C 如何将此字符串拆分为每个子字符串包含2个字符的子字符串?我很困惑,因为我找不到分隔符来拆分它们。使用String类的属性。您必须自己进行这样的拆分。可以通过以下方式使用类似子字符串的内容: public String[] customSplit(String src, int size) { Vector<String> vec = new Vector<String>(); f

我有这个字符串
8S8Q4D1SKCQC2C4S6H4C6DJS2S1C6C


如何将此字符串拆分为每个子字符串包含2个字符的子字符串?我很困惑,因为我找不到分隔符来拆分它们。

使用String类的属性。

您必须自己进行这样的拆分。可以通过以下方式使用类似子字符串的内容:

public String[] customSplit(String src, int size) {
    Vector<String> vec = new Vector<String>();

    for(int i = 0; i < src.length(); i += size) {
        vec.add(src.substring(i, (i+size > src.length()) ? src.length() : i+size);
    }

    return vec.toArray(); 
}
public String[]customSplit(String src,int size){
向量向量=新向量();
对于(int i=0;isrc.length())?src.length():i+size);
}
返回向量toArray();
}
System.out.println(Arrays.toString(
“8S8Q4D1SKCQC2C4S6H4C6DJS2S1C6C”。拆分(((?
for)(int i=0;i
为什么不使用实际的split函数呢?这就是它存在的原因。一个可能的原因是,使用粗糙正则表达式的
split
可能要慢得多。如果使用
字符串[],OTOH@nybbler的代码会快得多
而不是
向量
。所以我的回答是+1。@Stephen C-很公平。我不习惯使用允许动态数组大小的语言处理数组在Java中,数组不是动态大小的。但是在这种情况下,您不需要动态大小的数组。您可以根据
src
size
的值@Stephen C:是的,我可能选得不好。我想说的是一个在运行时确定大小的数组。谢谢你提醒我Java可以处理这个问题。这不会截断奇数长度字符串的最后一个字符吗?另外,使用正则表达式处理简单问题通常会使Code的可读性较差,因为它实际上只是增加了第二个问题。我喜欢考虑在我之后维护代码的程序员。@nybbler刚刚测试了它。它没有截断。最后一个字符前面仍然有两个字符。它也适用于单个字符。这实际上可能是一个bug=/当它满足您的要求时,它是一个“特性”“不是一个bug;)@nybbler供参考,我发现了。正则表达式不能处理单个字符或奇数长度字符串的最后一个字符。但它已经将该字符前面的点拆分。因此它与剩余的(1个字符)不匹配进入最后一个bin。这不会执行要求的操作。它只创建两个子字符串,第一个包含2个字符,第二个包含其余字符。
System.out.println(Arrays.toString(
    "8S8Q4D1SKCQC2C4S6H4C6DJS2S1C6C".split("(?<=\\G.{2})")
));
for (int i = 0; i < a[2].Length; i++)
{
    string ss = (8S8Q4D1SKCQC2C4S6H4C6DJS2S1C6C).Substring(i, 2);
    Console.Write(ss);
    i++; 
}