2017-07-15 34 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, 
相关问题