Java:如何将字符串拆分多个字符?

我试图在网上搜索解决这个问题,但我没有找到任何东西。

我写了以下抽象代码来解释我在问什么:

String text = "how are you?"; String[] textArray= text.splitByNumber(4); //this method is what I'm asking textArray[0]; //it contains "how " textArray[1]; //it contains "are " textArray[2]; //it contains "you?" 

splitByNumber方法每4个字符拆分字符串“text”。 我怎么能创建这个方法?

非常感谢

我认为他想要的是将一个字符串拆分为大小为4的子字符串。然后我会在循环中执行此操作:

 List strings = new ArrayList(); int index = 0; while (index < text.length()) { strings.add(text.substring(index, Math.min(index + 4,text.length()))); index += 4; } 

使用番石榴 :

 Iterable result = Splitter.fixedLength(4).split("how are you?"); String[] parts = Iterables.toArray(result, String.class); 

正则表达式怎么样?

 public static String[] splitByNumber(String str, int size) { return (size<1 || str==null) ? null : str.split("(?<=\\G.{"+size+"})"); } 

请参阅Java中的将字符串拆分为相等长度的子字符串

快速黑客

 private String[] splitByNumber(String s, int size) { if(s == null || size <= 0) return null; int chunks = s.length() / size + ((s.length() % size > 0) ? 1 : 0); String[] arr = new String[chunks]; for(int i = 0, j = 0, l = s.length(); i < l; i += size, j++) arr[j] = s.substring(i, Math.min(l, i + size)); return arr; } 

使用简单的java原语和循环。

 private static String[] splitByNumber(String text, int number) { int inLength = text.length(); int arLength = inLength / number; int left=inLength%number; if(left>0){++arLength;} String ar[] = new String[arLength]; String tempText=text; for (int x = 0; x < arLength; ++x) { if(tempText.length()>number){ ar[x]=tempText.substring(0, number); tempText=tempText.substring(number); }else{ ar[x]=tempText; } } return ar; } 

用法: String ar[]=splitByNumber("nalaka", 2);

尝试这个

  String text = "how are you?"; String array[] = text.split(" "); 

或者你可以在下面使用它

 List list= new ArrayList(); int index = 0; while (index 

我不认为有一个开箱即用的解决方案,但我会做这样的事情:

 private String[] splitByNumber(String s, int chunkSize){ int chunkCount = (s.length() / chunkSize) + (s.length() % chunkSize == 0 ? 0 : 1); String[] returnVal = new String[chunkCount]; for(int i=0;i 

用法是:

 String[] textArray = splitByNumber(text, 4); 

编辑:子字符串实际上不应超过字符串长度。

这是我能想到的最简单的解决方案..试试这个

 public static String[] splitString(String str) { if(str == null) return null; List list = new ArrayList(); for(int i=0;i < str.length();i=i+4){ int endindex = Math.min(i+4,str.length()); list.add(str.substring(i, endindex)); } return list.toArray(new String[list.size()]); } 

试试这个解决方案

 public static String[]chunkStringByLength(String inputString, int numOfChar) { if (inputString == null || numOfChar <= 0) return null; else if (inputString.length() == numOfChar) return new String[]{ inputString }; int chunkLen = (int)Math.ceil(inputString.length() / numOfChar); String[]chunks = new String[chunkLen + 1]; for (int i = 0; i <= chunkLen; i++) { int endLen = numOfChar; if (i == chunkLen) { endLen = inputString.length() % numOfChar; } chunks[i] = new String(inputString.getBytes(), i * numOfChar, endLen); } return chunks; } 

这是使用Java8流的简洁实现:

 String text = "how are you?"; final AtomicInteger counter = new AtomicInteger(0); Collection strings = text.chars() .mapToObj(i -> String.valueOf((char)i) ) .collect(Collectors.groupingBy(it -> counter.getAndIncrement() / 4 ,Collectors.joining())) .values(); 

输出:

 [how , are , you?]