将字符串分成四个一组

时间:2017-04-27 06:47:33

标签: java algorithm substring

输入是;

"AbrAcadAbRa"

输出应该是;

["AbrA", "brAc", "rAca", "Acad", "cadA", "adAb", "dAbR", "AbRa]

这是我到目前为止所尝试的,没有成功;

public static void main(String[] args) {
    // TODO Auto-generated method stub
    String str = "AbrAcadAbRa";
    int length = 4;
    String subString = "";
    for (int i = 0; i < length; i++) {
        subString = str.substring(i, length);
        System.out.println(subString);
        str = str.substring(i);
    }
}

输出错误;

["AbrA", "brA", "Ac", "d"]

4 个答案:

答案 0 :(得分:6)

迭代字符串的逻辑是错误的,因此您当前的结果。我在下面使用的逻辑是迭代输入字符串的整个长度,但是需要很多空间来确保可以采用适当的长度子字符串。然后,在每次迭代中,打印出length子字符串。

public static void main(String args[]) {
    String str = "AbrAcadAbRa";
    int length = 4;
    String subString = "";
    // iterate over the length of the input, offset by the substring length
    for (int i = 0; i < str.length()-length+1; i++) {
        subString = str.substring(i, i+length);
        System.out.println(subString);
        // this is wrong; don't modify the original string
        //str = str.substring(i);
    }
}

<强>输出:

AbrA
brAc
rAca
Acad
cadA
adAb
dAbR
AbRa

在这里演示:

Rextester

答案 1 :(得分:0)

您必须更改代码。你必须计算字符串的长度。

int len = str.length();

然后开始从0len-3的循环,因为每个字符串需要4个数字。所以你不能追问上一封信。 我把示例代码

public static void main(String[] args) {
    // TODO Auto-generated method stub
    String str = "AbrAcadAbRa";
    int len = str.length();
    int length = 4;
    String subString = "";
    for(int j = 0;j<len-3;j++){
        subString = str.substring(j, j+4);
        System.out.println(subString);
       }
    }

输出

AbrA
brAc
rAca
Acad
cadA
adAb
dAbR
AbRa

答案 2 :(得分:0)

使用流可以执行以下操作:

public static void main(String[] args) {
    String s = "AbrAcadAbRa";
    int length = 4;
    IntStream.range(0, s.length() - length + 1)
             .forEach(i -> System.out.println(s.substring(i, i + length)));
}

它创建一个直到最后length个字符的整数流,然后将从每个字符串开始的子字符串打印到length

输出:

  

阿布拉
  布拉奇
  RACA
  科学院
  的cadA
  ADAB
  dAbR
  阿布拉

答案 3 :(得分:-1)

试试这个,

=IF(logical_test, CONCAT("Found word", $YourWord), "Not found")