Java自定义字符串划分为动态数组

时间:2015-01-20 19:23:09

标签: java arrays string dynamic division

我有一个字符串,我必须根据预设长度数组进行划分,然后子字符串将进入动态数组。

示例:

S = 101010101011001100

通过1:数组=(" 10101010"," 11001100")

通过2:数组=(" 1010"," 1010"," 1100"," 1100")

通过3:数组=(" 10"," 10"," 10"," 10"," 11& #34;," 00"," 11"," 00") 等等....

我尝试过split(),vector,substring等。它没有给我所需的结果。

由于数组的大小也随着每次传递而增加,子串也逐渐增加,因此我无法理解代码中的实际除法。如果有人可以帮助我理解如何去做,那将非常有帮助。提前谢谢。

2 个答案:

答案 0 :(得分:0)

你可以做到

public static void divideAndPrint(String... strs) {
     String[] array = new String[strs.length*2];
     for(int i = 0; i < strs.length; i++) {
        array[i*2] = strs[i].substring(0,strs[i].length()/2);
        array[i*2+1] = strs[i].substring(strs[i].length()/2);
     }
     System.out.println(Arrays.toString(array));
     if (array[0].length() > 1)
         divideAndPrint(array);
}

divideAndPrint("1010101010110011");

打印

[10101010, 10110011]
[1010, 1010, 1011, 0011]
[10, 10, 10, 10, 10, 11, 00, 11]
[1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 1, 0, 0, 1, 1]

答案 1 :(得分:0)

要做到这一点,首先要把你的输入&#39; S&#39;到单个元素数组:

Input Array = { "101010101011001100" }

现在你要做的是循环输入长度数组。然后检查数组中的第一个元素是否短于当前长度值,然后执行以下操作:

  • 创建新阵列
  • 对于旧数组中的每个元素,
    • 使用strValue.substring()
    • 拆分为长度值大小
    • 将每个部分添加到新阵列
  • 用新数组替换旧数组
  • 打印出数组的值以显示它的工作

通过对每次迭代执行此操作,您应该得到您正在寻找的结果。

如果输入字符串长度与输入数组长度不完全匹配,或者输入数组长度不按递减顺序排列,则可能效果不佳。如果重要,请留意这些边缘情况。

希望这有帮助!