我有一个像这样的字符串。我想把第二行放在一个数组(3,9,10,11 ...)中,第三行(5,8,4,3 ...)放在一个数组中
C8| 3| 5| 0| | 0|1|
C8| 9| 8| 0| | 0|1|
C8| 10| 4| 0| | 0|1|
C8| 11| 3| 0| | 0|1|
C8| 12| 0| 0| | 0|1|
C8| 13| 0| 0| | 0|1|
C8| 14| 0| 0| | 0|1|
此方法最初按行解析数字。现在我有专栏.. 如何在这个Parse方法中做到这一点?我想要几个小时,我不知道该怎么做。
Add方法等待2整数。 int secondNumberFinal,int thirdNumberFinal
private Parse(string lines)
{
const int secondColumn = 1;
const int thirdColum = 2;
var secondNumbers = lines[secondColumn].Split('\n'); // i have to split by new line, right?
var thirdNumbers = lines[thirdColum].Split('\n'); // i have to split by new line, right?
var res = new Collection();
for (var i = 0; i < secondNumbers.Length; i++)
{
try
{
var secondNumberFinal = Int32.Parse(secondNumbers[i]);
var thirdNumberFinal = Int32.Parse(thirdNumbers[i]);
res.Add(secondNumberFinal, thirdNumberFinal);
}
catch (Exception ex)
{
log.Error(ex);
}
}
return res;
}
谢谢你!
答案 0 :(得分:1)
下面的代码应该为你做。逻辑很简单:使用'\ n'拆分数组(请检查是否需要“\ r \ n”或其他行结束格式),然后用“|”拆分。将数据作为元组的IEnumerable返回将提供灵活性和延迟执行。如果您希望使用Enumerable.ToList
扩展方法
它使用LINQ(Select
),而不是foreach
循环,因为它在这种情况下很优雅
static IEnumerable<Tuple<int, int>> Parse(string lines) {
const int secondColumn = 1;
const int thirdColum = 2;
return lines.Split('\n')
.Select(line => line.Split('|'))
.Select(items => Tuple.Create(int.Parse(items[secondColumn]), int.Parse(items[thirdColum])));
}
答案 1 :(得分:0)
如果原始字符串是单个字符串,则在换行符上拆分一次以生成字符串数组。通过拆分|来解析每个新字符串&安培;选择第二个&amp;第三个值。
为您部分重写您的方法:
private Parse(string lines)
{
const int secondColumn = 1;
const int thirdColum = 2;
string [] arrlines = lines.Split('\r');
foreach (string line in arrlines)
{
string [] numbers = line.Split('|');
var secondNumberFinal = Int32.Parse(numbers[secondNumbers]);
var thirdNumberFinal = Int32.Parse(numbers[thirdNumbers]);
// Whatever you want to do with them here
}
}