如何获得没有空值的数组的长度?

时间:2017-05-10 13:19:38

标签: c#

我现在正在做一个关于解决魔方问题的项目。我想创建一个数组来记住这样的步骤:

char[] Steps = new char[200];

每次我执行'F','B','R','L','U','D'转弯方法时,它会添加'F','B','R',数组中的'L','U','D'字符。 但是当我想得到步长时,它总是显示200。

例如:

char[] steps = new char[5];

现在我已经添加了3个步骤:

steps[] = {'f','b','f','',''};

如何获得长度'3'?

或者我可以使用任何替代方法,我不需要在开头设置长度?

4 个答案:

答案 0 :(得分:3)

您可以使用List<char>但如果您的情景中的表现非常重要,您可以初始化初始容量

类似于以下内容

List<char> list  = new List<char>(200);
list.Add('c');
list.Add('b');

这里count会返回你真正添加的内容

var c = list.Count; 

注意在列表中,您可以应用Linq Count()或仅使用Count属性,该属性不需要像Linq那样计算并立即返回结果

答案 1 :(得分:2)

您将收到此行的编译错误

steps[] = {'f','b','f','',''};

由于你不能使用空字符,你需要编写步骤而不是步骤[]。 我建议您使用字符串数组,并使用LINQ以这种方式获取非空元素的计数:

string [] steps = {"f","b","f","",""};
Console.WriteLine(steps.Where(x=>!string.IsNullOrEmpty(x)).Count());

答案 2 :(得分:0)

使用System.Linq计算非空项:

steps.Count(x => x != '\0');

您的代码无法编译,因为''不允许char,但我假设您的意思是char中的空元素实际由'\0'或Unicode Null表示的数组。因此,上述条件只计算数组中的非null项。

答案 3 :(得分:0)

你可以使用一个字符列表来简化这个事情:

import requests
from bs4 import BeautifulSoup

page = requests.get("http://www.queensbronxba.com/directory/")
soup = BeautifulSoup(page.content, 'html.parser')  
company = soup.find(class_="boardMemberWrap")  
contact = company.findAll(class_="boardMemberInfo")
info = contact[0]
print(info.prettify())


name_tags = company.select("h4")
names = [nt.get_text() for nt in name_tags]
print(names)


for name in company.findAll(class_="boardMember"):
    for n in name.findAll('p')[:1]:
    print(n.text)


phone_tags = company.select('a[href^="tel"]')  
phones = [pt.get_text() for pt in phone_tags]  
print(phones)


email_tags = company.select('a[href^="mailto"]')  
emails = [et.get_text() for et in email_tags]  
print(emails)

只需在每个步骤的列表中添加一行:

List<char> steps = new List<char>();

最后,您可以轻松计算列表中的移动次数

char move = 'F';
steps.add(move);