访问字符串数组中的字符
本文关键字:字符 数组 字符串 访问 | 更新日期: 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;
}