C#检查每个其他字符是否为'0'

时间:2010-11-24 09:52:32

标签: c# string for-loop

我正在使用BinaryReader读取文本文件,然后用它做我想要的东西(剥离字符等),然后用BinaryWriter写出来。

美好而简单。

剥离任何东西之前我需要做的一件事是:

  1. 检查文件中的字符数是否均匀(显然是file.Length%2)和

  2. 如果长度是偶数,请检查每个前面的字符是否为零。

  3. 例如:

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

    我需要验证每个第二个字符是否为零。

    有什么想法吗?某种聪明的循环?

    OKAY!

    我需要更加明确我正在做的事情。我有包含'records'的file.txt。我们只是说它是逗号分隔的文件。现在,我的程序需要做的是逐字节读取这个文件,并删除我们不想要的所有字符。我做到了。但是,一些将通过该程序的文件将是单字节,有些将是双字节。我需要处理这两种可能性。但是,我需要首先弄清楚文件是单字节还是双字节。

    现在,显然该文件是双字节:

    1. 文件长度可以被2和
    2. 整除
    3. 每个前面的字符都是零。
    4. 这就是为什么我需要这样做。

      我希望这会清除一些东西......

      UPDATE!

      我只是在参数中有一个布尔值 - is16Bit。谢谢你的帮助!我宁愿删除这个问题,但它不会让我......

3 个答案:

答案 0 :(得分:2)

静态类中的类似内容:

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);

答案 1 :(得分:0)

string[] foo = file.text.Split(new{','}, StringSplitOptions.RemoveEmptyEntries);
for(int i=0; i<foo .Length; i+=2)
{
  if(file[i]!="0")
     return false;
}

答案 2 :(得分:0)

这个怎么样

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");