У меня есть матрица в этом формате, который я пытаюсь проверить и удалить первую строку:Пропустить первую строку в матрице, и проверка ширины/высоты
3 4
0 0 0
0 0 0
0 0 0
0 0 0
Если первая линия и другие линии фактические данные.
Width Height
Что такое лучший способ A Удалите первый ряд, и B проверьте, что все строки соответствуют Ширина Критерии Высота указано? Я мог бы сделать простой цикл и скопировать их, но я ищу более элегантный способ сделать это? Может быть, с Linq или одним из методов сбора?
До сих пор у меня есть:
//add the split for correctness
string[][] lines = File.ReadAllLines(fileName).Select(x=>x.Split(' ')).ToArray();
//first line is width/hight
int length = lines.Length ==0 ;
if(|| (length > 0 && lines[0].Length !=2)){
throw new InvalidDataException("File is not correctly formated:" + fileName);
}
int width = lines[0][0];
int hieght = lines[0][1];
//Check Row count
if(length != height -1){
throw new InvalidDataException("Invalid missing rows in the Matrix definition");
}
//make sure the file is correctly formated with width and height:
if(lines.Any(x=>x.Length != Width)){
//I know this fails because of first line
throw new InvalidDataException("Invalid Width in a row in the Matrix");
}
Все предложения на лучший способ подтвердить ввод?
Dont также необходимо добавить в регулярное выражение, что первая строка является размер 2? (или я пропустил это?) – Nix
Они всегда будут intergers ... 0 1 2 3 – Nix
@Nix '\ d +' есть дважды. Поэтому он будет принят только в том случае, если они являются целыми числами. –