Java 如何在每N个字拆分一个字符串数组?
我被一个可能很简单的想法难住了。我正在使用BufferedReader读取文本文件,并在空白处拆分字符串。我需要创建一个新的字符串数组,并将前一个数组中的新元素按3字分组,例如{the,quick,brown,fox,jumped,over,the,lazy,cat}⇒ {敏捷的棕色狐狸跳过,懒惰的猫} 到目前为止,我提出了一个非常低效的尝试,它迭代数组并将元素和空格连接到一个新的字符串数组。它还将在新数组中保留空值,因为我每次递增I+3 字符串行=; 而line=br.readLine!=空的{ 字符串字[]=line.split; 字符串[]结果=新字符串[words.length-1]; 对于int i=0;iJava 如何在每N个字拆分一个字符串数组?,java,arrays,string,Java,Arrays,String,我被一个可能很简单的想法难住了。我正在使用BufferedReader读取文本文件,并在空白处拆分字符串。我需要创建一个新的字符串数组,并将前一个数组中的新元素按3字分组,例如{the,quick,brown,fox,jumped,over,the,lazy,cat}⇒ {敏捷的棕色狐狸跳过,懒惰的猫} 到目前为止,我提出了一个非常低效的尝试,它迭代数组并将元素和空格连接到一个新的字符串数组。它还将在新数组中保留空值,因为我每次递增I+3 字符串行=; 而line=br.readLine!=空的
a Goose who null null was taking a null null walk by the null null side of the null null "Good heavens!" cried null null the Goose.
你的朋友是:
演示:
工作原理
Arrays.copyOfRange将arr从索引i复制到索引Integer.minarr.length,i+SIZE-1,其中Integer.minarr.length,i+SIZE返回arr.length和i+SIZE的最小值。对于i+大小可能超过arr.length导致IndexOutOfBoundsException的最后一个副本,这是必需的。以下是arr中10个元件的图示,尺寸=3:
当i=0时,Arrays.copyofRangerarr,0,Integer.min10,0+3=>Arrays.copyofRangerarr,0,3将从索引0返回arr之外的子数组到索引2
当i=3时,Arrays.copyofRangerarr,3,Integer.min10,3+3=>Arrays.copyofRangerarr,3,6将arr的子数组从索引3返回到索引5
当i=6时,Arrays.copyofRangerarr,6,Integer.min10,6+3=>Arrays.copyofRangerarr,6,9将arr的子数组从索引6返回到索引8
当i=9时,Arrays.copyofRangerarr,9,Integer.min10,9+3=>Arrays.copyofRangerarr,9,10将arr中的子数组从索引9返回到索引9
您可以使用以下方法: 公共字符串[]splitArrayString[]数组,int splitByNumOfItems{ String[]newArr=新字符串[array.length/splitByNumOfItems]; StringBuilder str=新的StringBuilder; int-newArrPos=0; 对于int i=0;i
[Thequickbrown, foxjumpedover, thelazycat]
解释
我们可以创建一个名为newArr的新数组,它将容纳名为array的原始数组的项
我们可以循环数组的项,每次它循环时,我们检查当前位置是否可以被splitByNumOfItems整除。如果是,我们可以将其设置到newArrPos确定的newArr中的相应位置。测试此代码:
字符串行=;
而line=br.readLine!=空的{
字符串字[]=line.split;
字符串[]结果=新字符串[words.length-1/3+words.length-1%3>0?1:0];
int j=0;
对于int i=0;i你好,Arvind,感谢您的回复您提供的解决方案非常有效。我在某种程度上理解了逻辑,但由于我是编程新手,我非常希望能对Arrays.copyOfRange方法逻辑作进一步的澄清。我知道它正在返回arr副本并将其分配给t
结果数组基于最小和最终索引范围。但是我对max index-Integer.minarr.length,I+SIZEYou有点困惑,尤其是最受欢迎的。我为你添加了一个插图。如有任何疑问,请随时发表评论。谢谢您的示例,非常感谢。它确实有助于澄清逻辑,防止越界,并使用附加变量。不客气。这不一定是最好的方法,但我认为您需要继续使用这种方法,只是为了学习,正如您所说,您是JAVA新手,或者有一种更短的方法。同意!效率会随着时间的推移而提高,但我现在很高兴能够了解这类问题的逻辑。
[The quick brown, fox jumped over, the lazy cat, Hello]
[Thequickbrown, foxjumpedover, thelazycat]