2017-02-01 38 views
-2

在這裏,我有充分的結果在我的字符串的Java - 分配結果的特定數量的一個字符串

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} 

有沒有什麼辦法可以做到這一點。

謝謝。

+1

循環,子串和許多其他方式...當你顯示你已經嘗試過的東西時它也很有幫助。 – Abubakkar

+0

請任何例子先生? – Wilson

+0

我在這裏看不到字符串... – Fildor

回答

0

你可以做這樣的輔助性方法在一個String數組,你可以從你的「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的答案。

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(); 
    } 

現在不能嘗試,但我認爲它應該工作。

1

您可以使用Streamoffsetlimit方法:

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偏移。

相關問題