当前位置: 动力学知识库 > 问答 > 编程问答 >

java - Split a String into number of Characters desired by the user

问题描述:

I want to split a String into n number of characters.

Consider input to be "Example-for-my-Question". Now if I want to split into n=3 characters, output should be "Exa, mpl, e-f, or-, my-, Que, sti, on" and suppose n=4, output should be "Exam, ple-, for-, my-Q, uest, ion" How can you modify the program below without using POSIX.

 import java.util.Scanner;

public class SplitString {

public static void main(String[] args) {

Scanner in = new Scanner(System.in);

System.out.println("Enter a String; ");

String inputString = in.nextLine();

System.out.println("How many characters do you want to split into ?");

int n = in.nextInt();

String[] array = inputString.split(" ", n);

System.out.println("Number of words: " + array.length);

for (String arr : array)

System.out.println(arr);

}

}

网友答案:

The simple way to do this is to use String.substring(...) repeatedly to trim N characters off the front of your string ... in a loop.

But if you really want to do this using String.split(...), then I think that the separator regex needs to be a positive look-behind that matches N characters. (It is obscure, and inefficient ... but if regexes are your universal tool ...)

网友答案:

You can use substring for this task.

String sp="StackOverFlow";
int NoOfChars=3;
for(int i=0;i<sp.length();i+=NoOfChars)
{
    if(i+NoOfChars<=sp.length())
     System.out.println(sp.substring(i,i+NoOfChars));
             //Instead add in String ArrayList
    else
     System.out.println(sp.substring(i));
}

OUTPUT

Sta
ckO
ver
Flo
w

NOTE:Better to use trim() to remove leading or trailing spces

网友答案:

This works for me. In addition to splitting into known lengths, it checks for a null or "too small of a" source string, etc. If a null string is supplied, then a null is returned. If the source string is smaller than the requested split length, then the source string is simply returned.

   public static void main (String[] args) throws java.lang.Exception
    {
        // Three test cases...
        String pieces[] = SplitString("Example-for-my-Question", 3);
        //String pieces[] = SplitString("Ex", 3);
        //String pieces[] = SplitString(null, 3);

        if (null != pieces)
        {
            for (int i = 0; i < pieces.length; i++)
            {
                System.out.println(pieces[i]);
            }
        }
    }

    private static String[] SplitString(String source, int size)
    {
        String result[] = null;

        if (null != source && source.length() > size)
        {
            int numberOfElements = source.length() / size;
            int modulo = source.length() % size;
            if (modulo > 0)
            {
                numberOfElements++;
            }

            result = new String[numberOfElements];

            for (int i = 0; i < numberOfElements; i++)
            {
                if (numberOfElements - 1 != i)
                {
                    result[i] = source.substring(i * size, (i * size) + size);
                }
                else
                {               
                    result[numberOfElements - 1] = source.substring(i * size, (i * size) + modulo);
                }
            }
        }
        else if (null != source)
        {
            result = new String[1];
            result[0] = source;
        }

        return result;
    }
网友答案:

Please try the following program, but here you have to give input to "N" inside the program itself

class Main {
  public static void main(String[] args) {
    int N = 5;
    String text = "aaaaabbbbbccccceeeeefff";
    String[] tokens = text.split("(?<=\\G.{" + N + "})");
    for(String t : tokens) {
      System.out.println(t);
    }
  }
}
分享给朋友:
您可能感兴趣的文章:
随机阅读: