访问字符串数组中的字符

本文关键字:字符 数组 字符串 访问 | 更新日期: 2023-09-27 17:57:29

我有一个字符串数组,如下所示。我正在遍历字符串数组,并打印每个字符串元素的第四个字符,它总是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
        }
    }
}
 }

访问字符串数组中的字符

您的代码就在那里,您只需要记住字符串中的每个字符,无论其值如何,都仍然是一个字符。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(); 
if (bitstrings.All(s => s[3] == '1'))
{
   //printSomething
}

这利用了LINQ"All"函数的优势,当且仅当集合的所有元素都满足所提供的谓词时,该函数才返回true。在这种情况下,如果传递的字符串的第四个元素是字符"1",则谓词返回true。

第四个元素用"3"进行索引,因为C#(像大多数语言一样)对其数组使用基于0的索引。您可能还需要将using System.Linq添加到代码文件中才能使用此解决方案。

类似的东西?

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