我想将一个String拆分成n个字符。 考虑输入为" 示例为我的问题"。现在,如果我想要分成n = 3个字符,输出应该是" Exa,mpl,e-f,或者 - ,my-,Que,sti,on "并且假设n = 4,输出应该是" 检查,ple-,for-,my-Q,uest,ion "如何在不使用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);
}
}
答案 0 :(得分:1)
您可以使用substring
执行此任务。
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));
}
<强> 输出 强>
Sta
ckO
ver
Flo
w
注意:最好使用trim()
删除前导或尾随的
答案 1 :(得分:1)
这样做的简单方法是反复使用String.substring(...)
来修剪字符串前面的N个字符......循环播放。
但是如果真的想要使用String.split(...)
来做这件事,那么我认为分隔符正则表达式需要是一个匹配N个字符的正面后视。 (这是模糊的,低效的......但如果正则表达式是你的通用工具......)
答案 2 :(得分:1)
这对我有用。除了拆分为已知长度之外,它还会检查null或“太小的”源字符串等。如果提供了空字符串,则返回null。如果源字符串小于请求的分割长度,则只返回源字符串。
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;
}
答案 3 :(得分:0)
请尝试以下程序,但在这里你必须在程序本身内输入“N”
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);
}
}
}