1

I'm trying to figure out how to split an array into smaller sections. I have an String array with a bunch of characters. I would like to make a new array that stores the first five of those characters in it's first index, the next five in the next index, etc..

2
  • 2
    do you mean you have a string that you wanted to split, or an actual array of multiple strings?
    – Dan Q
    Commented Nov 17, 2011 at 4:28
  • I don't have any code because I have no idea how to do this. So far I have a String[500] array with 500 letters put together. I want to split this into smaller arrays. For example String[25]=[qwfiojofqiwjeofiewjq] smaller=[qwfio, jofqi, wjeof, iewjq]
    – Artifaxx
    Commented Nov 17, 2011 at 4:30

4 Answers 4

2

Something like this?

String separator = new String("|");
String [] splits = string.split(separator);
2

Assuming you have something like this:

String[] myArray = {"12345123", "45123", "45"};

You can split it into an array of five characters like this:

String wholeString="";
for(String s : myArray)
    wholeString += s;

int arrayLength = wholeString.length()/5;
if(wholeString.length()%5==0)
    arrayLength--;

String[] arrayOfFive = new String[arrayLength];
int counter=0;
String buffer = "";
for(int i=0;i<s.length();i++){
    buffer += s.charAt(i);
    if(buffer.length()==5){
        arrayOfFive[counter] = buffer;
        buffer = "";
}

Now, if you don't want to get the whole array string into memory and hold it there, you can do this one character at a time:

String buffer = "";
List<String> stringList = new ArrayList<String>();
for(String s : myArray){
    for(int i=0;j<s.length();i++){
        buffer += s.charAt(i);
        if(buffer.length()==5){
            stringList.add(buffer);
            buffer = new String();
        }
    }
}

String[] arrayOfFive = new String[stringList.length()];
stringList.toArray(arrayOfFive);

If you simply have an array of 1-character strings, then you can do it like this:

int arrayLength = myArray.length/5;
if(myArray.length%5==0)
    arrayLength--;
String[] arrayOfFive = new String[arrayLength];
for(int i=0;i<myArray.length;i++){
    if(i%5==0)
        arrayOfFive[i/5] = "";
    arrayOfFive[i/5] += myArray[i];
}

If you have a string array containing a single string of length 500, then you can get the string like this:

String myString = myArray[0];

After which you can loop through the characters in the string, breaking it up:

for(int i=0;i<myString.length();i++){
    if(i%5==0)
        arrayOfFive[i/5] = "";
    arrayOfFive[i/5] += myString.charAt(i);
}
1
  • I have something more like String[] myArray = {"123451234512345"}; and would like it to be split into String[] arrayOfFive = {"12345", "12345", "12345"}; but this is very close.
    – Artifaxx
    Commented Nov 17, 2011 at 4:49
1
List<String> list=new ArrayList<String>();
int chunkSize=5;
for (int i=0; i<strings.size; i++) {
  int lastChunk = strings[i].length() % chunkSize;
  int chunks=strings[i].length() / chunkSize;
  for (int j=0; j<chunks; j++) {
    list.add(strings[i].substring(j*chunkSize,j*chunkSize+chunkSize);
  }
  if (lastChunk > 0) {
    list.add(strings[i].substring(chunks*chunkSize, chunks*chunkSize+lastChunk);
  }
}
1
  • Sure. It'd be more like, "myArray[idx++]=...". You just have to ensure that when you initialize myArray, you make it big enough that you don't overflow it. Commented Nov 17, 2011 at 5:03
0
char c[]=str.toCharArray();
    int array_length=0;
    int start=1;
    if(str.length()%5==0)
    {
        array_length=str.length()/5;
    }
    else
        array_length=str.length()/5 +1;
    String s[]=new String[array_length];
    for(int i=0;i<array_length;i++)
    {
        String temp="";

        for(int j=start;j<=str.length();j++)
        {
            if(j%5==0)
            {
                temp=temp+c[j-1];
                start=j+1;
                break;
            }
            else
            {
                temp=temp+c[j-1];
            }
        }
        s[i]=temp;
    }
    for(int i=0;i<array_length;i++)
    {
        System.out.println(s[i]);
    }

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.