这里我的字符串
中有完整的结果formatedString = {1,2,3,4,5,6,7,8,9,10.....N}
我想首先分配5个结果让我们说
formatedString1 = {1,2,3,4,5}
然后在下一个电话,接下来的五个电话,直到所有结果都结束。
formatedString1 = {6,7,8,9,10}
我有什么方法可以做到这一点。
感谢。
答案 0 :(得分:1)
您可以使用Stream
offset
和limit
方法:
String str = "0,1,2,3,4,5,6,7,8,9";
int offset = 0; int limit = 5;
Stream.of(str.split(",")).skip(offset).
limit(limit).forEach(System.out::println);
每次增加偏移量为5。
答案 1 :(得分:0)
你可以在一个String-Array上创建一个这样的辅助方法,你可以从你的" formatedString"中获取:
String formatedString = "1,2,3,4,5,6,7,8,9,10";
String[] arr = formatedString.split(","); // => ["1","2","3",...]
private void call( String[] inputArr, int from, int count )
{
// check bounds here!
// "from" must be >0 and < inputArr.length
// "from" + "count" must be <= inputArr.length
for( int i = from; i < from+count; i++ )
{
// just for safety:
if ( i>=inputArr.length ) break;
handle( inputArr[i] );
}
}
在一个循环中调用它:
int step = 5;
for ( int index = 0; index < arr.length; index += step )
{
// check that index + step do not exceed array length here
call( arr, index, step );
}
对于Java 8-Stream解决方案,请参阅@Anton's的答案。
答案 2 :(得分:0)
据我了解,您希望每次迭代都能获得n个数字。我愿意:
public String getN(String st, int n){
ArrayList<String> res = new ArrayList<String>();
for(int i = 0; i<(st.length/n),i++)
String aux[n]= new String[n];
for(int j = 0; j<n;j++){
aux[j]=st[(i*n)+j]
}
res.add(aux(i));
}
return res.toString();
}
现在不能尝试,但我认为它应该有用。