访问字符串数组中的字符

时间:2014-04-07 23:12:28

标签: c# arrays string char

我有一个字符串数组,如下所示。我正在迭代字符串数组并打印每个字符串元素的第四个字符,它始终为1。

我一直在尝试做的是实现一个if语句,这样如果每个元素的每个第四个字符为1然后打印一些东西,但我不确定如何访问我正在迭代的每个元素通过

我添加了一个带有一些伪代码的if语句,试图突出我想要做的事情。 谢谢你的帮助。

       namespace ConsoleApplication6
       {
          class Program
              {
           static void Main()
              {
        string[] bitstrings = new string[16];
        bitstrings[0] = "00101";
        bitstrings[1] = "00001";
        bitstrings[2] = "00001";
        bitstrings[3] = "00101";
        bitstrings[4] = "00101";
        bitstrings[5] = "00101";
        bitstrings[6] = "00101";
        bitstrings[7] = "00101";
        bitstrings[8] = "00101";
        bitstrings[9] = "00101";
        bitstrings[10] = "00101";
        bitstrings[11] = "00101";
        bitstrings[12] = "00101";
        bitstrings[13] = "00101";
        bitstrings[14] = "00101";
        bitstrings[15] = "00101";

        for (int x = 0; x < bitstrings.Length; x++)
        {

            int s = bitstrings[x][4];
            Console.ReadLine();



        }

        if(/*all bitstrings[x][4] = 1*/)
        {
            //print something
        }

    }
}
 }

3 个答案:

答案 0 :(得分:5)

你的代码就在那里,你只需要记住字符串中的每个字符,无论其值如何,仍然是一个字符。你的if语句也需要在for循环中。

for (int x = 0; x < bitstrings.Length; x++)
{
    //3 instead of 4 because arrays are 0 indexed
    if(bitstrings[x][3] == '1')
    {
       //valid char
    }
}
//Also don't need to read like every iteration.
Console.ReadLine(); 

编辑:如果所有第4个元素必须为1,则将其修改为包含布尔值,如果找到无效的字符则将其分解

bool allOne = true;
for (int x = 0; x < bitstrings.Length; x++)
{
    //3 instead of 4 because arrays are 0 indexed
    if(bitstrings[x][3] != '1')
    {
       allOne = false;
       break;
    }
}
if(allOne)
{ 
   //Do something
}

Console.ReadLine(); 

答案 1 :(得分:3)

if (bitstrings.All(s => s[3] == '1'))
{
   //printSomething
}

这利用了LINQ&#34; All&#34;当且仅当集合的所有元素都满足提供的谓词时才返回true的函数。在这种情况下,如果传递的字符串的第四个元素是字符&#39; 1&#39;那么谓词将返回true。

第四个元素用&#34; 3&#34;索引。因为C#(像大多数语言一样)使用基于0的索引作为它们的数组。您还可能需要将using System.Linq添加到代码文件中以使用此解决方案。

答案 2 :(得分:0)

这样的东西?

static bool AllBitsEqual( IEnumerable<string> source , int offset , char value )
{
  return source.All( x => offset < x.Length && x[offset] == value ) ;
}

static bool AllBitsEqual( IEnumerable<string> source , int offset , char value )
{
  return source.Aggregate( true , (acc,s) => acc &= (s.Length > offset && s[offset] == value ) ) ;
}

甚至......

static bool AllBitsEqual( IEnumerable<string> source , int offset , char value )
{
  bool flag = true ;
  foreach ( string s in source )
  {
    flag &= (s.Length > offset && s[offset] == value ) ;
  }
  return flag;
}