2017-07-15 69 views
0
interview.Job.Summary.ToArray().split() 

interview.Job.Summary是一個字符串,如果我使用toArray方法則變爲char []。但似乎沒有這樣的功能分裂。我希望它分裂,以便每個數組包含一定數量的字符(200個字符 - > 50 50 50 50)如何在一定數量的字符之後分割字符數組

請幫忙!

編輯:

enter image description here

我使用了一個名爲PDFSharp庫。要顯示一個字符串,我們必須從字面上繪製字符串。因此,將這條長長的一行分割成4行不需要拆分char數組似乎是不可能的。

EDIT2:

enter image description here

+1

可能的複製[在LINQ創建批次(https://stackoverflow.com/questions/13731796/create-batch-in-linq) – Kote

+0

你可以分享'interview.Job.Summary'的樣本值以及你希望輸出應該是什麼樣子? –

+0

請不要做文字的截圖。只需複製文本並將其格式化爲代碼即可。 –

回答

1

您可以使用.Take(int),是以數組的只是某一部分。例如:myArray.Take(50)將採用數組的前50個元素myArray

取第一50個元素之後,如果要採取的下一個50個元素,則需要的偏移使用.Skip(int)方法將跳過一定數量數組中的元素的添加。例如,myArray.Skip(20).Take(50)將返回索引爲20至49的數組myArray的元素。

因此,如果要拆分爲等於你需要這50個字符組成部分的數組:

char[] part1 = myArray.Take(50).ToArray(); // Elements 0 to 49 
char[] part2 = myArray.Skip(50).Take(50).ToArray(); // Elements 50 to 99 
char[] part3 = myArray.Skip(100).Take(50).ToArray(); // Elements 100 to 149 
char[] part4 = myArray.Skip(150).Take(50).ToArray(); // Elements 150 to 199 

Split()Take()是LINQ的命令和陣列變成一個IEnumerable。 Take(50)之後的ToArray()將以數組格式重新排列。有關LINQ的更多信息:https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/linq/introduction-to-linq-queries

+0

這似乎工作。但是當我試圖用「interview.Job.Summary.Take(50).ToString()」來測試它時,我得到了「System.Linq.Enumerable + d__24'1 [System.Char ]」。什麼似乎是問題? – Dukakus17

+0

在Take(50)'之後添加'ToArray()'以將其放回數組格式。像這樣:'Take(50).ToArray()。ToString()'。這個問題是由'Split()'和'Take()'是Linq命令並將數組更改爲'IEnumerable'。有關Linq的更多信息:https://docs.microsoft.com/en-us/dotnet/csharp/programming-guide/concepts/linq/introduction-to-linq-queries – Maxime

+0

現在「interview.Job.Summary.Take( 50).ToArray()。ToString()「這給了我」System.Char []「。這樣做不可能嗎? – Dukakus17

1

你沒有必要不同的陣列在那裏,它是你的字符串中的字符一個陣列。這是很難理解你想達到什麼樣的

編輯:

哦,我想我明白了。我想你誤會了,這已經是一個數組,這意味着它已經分裂。你只需要使用數組從它那裏得到的每個字符是這樣的:

int[] arr = interview.Job.Summary.ToArray(); 

    foreach (int i in arr) 
    { 
    firstArray = arr.Take(array.Length/4).ToArray(); 
    secondArray = arr.Take(array.Length/4).ToArray(); 
    thirdArray = arr.Take(array.Length/4).ToArray(); 
    fourthArray = arr.Take(array.Length/4).ToArray(); 

    string1 = Take(firstArray.Length).ToString(); 
    string2 = Take(secondArray.Length).ToString(); 
    string3 = Take(thirdArray.Length).ToString(); 
    string4 = Take(fourthArray.Length).ToString(); 
    } 
+0

它已經分裂,我添加了代碼來顯示如何從數組中獲取每個字符,然後按照每個字符做你想要的東西,不過你喜歡 –

+0

他們就像你想讓他們成爲50,50,50,現在你只需要使用foreach遍歷它們,然後做任何你想要的每一個 –

+0

編輯我的代碼有點,希望這是你在找什麼 –

2

你可以這樣做:

string text = "It was the best of times, it was the worst of times,"; 
int lengthOfEachPart = 10; 

string[] parts = 
    text 
     .ToCharArray() 
     .Select((x, n) => new { x, n }) 
     .GroupBy(y => y.n/lengthOfEachPart) 
     .Select(y => new string(y.Select(z => z.x).ToArray())) 
     .ToArray(); 

這就給了你:的

 
It was the 
best of t 
imes, it w 
as the wor 
st of time 
s, 
相關問題