C # Проверьте каждый другой символ «0» - PullRequest
1 голос
/ 24 ноября 2010

Я читаю в текстовом файле с помощью BinaryReader, затем делаю с ним то, что хочу (зачистку символов и т.

Красиво и просто.

Одна из вещей, которые мне нужно сделать перед тем, как я раздену что-либо, это:

  1. Проверьте, чтобы количество символов в файле было четным (очевидно file.Length% 2) и

  2. Если длина четная, убедитесь, что каждый предыдущий символ равен нулю.

Например:

0, 10, 0, 20, 0, 30, 0, 40.

Мне нужно убедиться, что каждый второй символ равен нулю.

Есть идеи? Какой-то умный для цикла?

ХОРОШО!

Мне нужно быть намного более ясным в том, что я делаю. У меня есть file.txt, который содержит «записи». Скажем так, это файл с разделителями-запятыми. Теперь, что моя программа должна сделать, это прочитать этот файл, побайтово и убрать все символы, которые нам не нужны. Я сделал это. Но некоторые файлы, которые будут проходить через эту программу, будут однобайтовыми, а некоторые - двухбайтовыми. Мне нужно разобраться с обеими этими возможностями. Но мне нужно сначала выяснить, является ли файл одиночным или двухбайтовым.

Теперь, очевидно, если файл является двухбайтовым:

  1. Длина файла будет делиться на 2 и
  2. Каждый предшествующий символ будет нулем.

и именно поэтому мне нужно это сделать.

Надеюсь, это прояснит некоторые вещи ..

UPDATE!

У меня просто будет логическое значение в аргументах - is16Bit. Спасибо за помощь ребята! Я бы скорее удалил вопрос, но он мне не позволил ..

Ответы [ 3 ]

2 голосов
/ 24 ноября 2010

Примерно так в статическом классе:

public static IEnumerable<T> EveryOther(this IEnumerable<T> list)
{
   bool send = true;
   foreach(var item in list)
   {
      if (send) yield return item;
      send = !send;
   }
}

, а затем (с использованием пространства имен предыдущего класса)

bool everyOtherIsZero = theBytes.EveryOther().All(c => c == 0);
0 голосов
/ 24 ноября 2010

Как насчет этого

string content = File.ReadAllText(@"c:\test.txt");
if (content.Length % 2 != 0)
    throw new Exception("not even");
for(int i = 0; i < content.Length; i+=2)
    if (content[i] != '0')
        throw new Exception("no zero found");
0 голосов
/ 24 ноября 2010
string[] foo = file.text.Split(new{','}, StringSplitOptions.RemoveEmptyEntries);
for(int i=0; i<foo .Length; i+=2)
{
  if(file[i]!="0")
     return false;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...